Python脚本读取/写入(CSV)文件大小是否有限制?
我明天会写一个小的Python脚本,先把一个旧的MS Access数据库里的所有数据提取到一个CSV文件中,然后经过一些数据清理和处理后,再把这些数据导入到Linux上的MySQL数据库里。
我打算使用pyodbc来连接MS Access数据库。我会在Windows环境下运行这个初始脚本。
这个数据库里有超过五十万条数据。我有几个问题:
- 这么多记录会不会有问题?(比如说会不会碰到什么限制?)
- 有没有比CSV更好的文件格式来存放这些临时数据?
我选择CSV是因为它比较简单明了(而且我还是个Python新手)——但我想听听有没有人做过类似的事情,给我一些建议。
4 个回答
1
我觉得没必要使用中间格式。直接通过ADO从Access提取数据,然后插入到MySQL里,其实应该没什么问题。
3
如果你有Access这个软件,还有另外一种方法...
首先,在MySQL里创建一个表来存放数据。
接着,在你的Access数据库里,建立一个ODBC链接,连接到MySQL的那个表。
然后你可以执行一个查询,比如:
INSERT INTO MySqlTable (field1, field2, field3)
SELECT field1, field2, field3
FROM AccessTable;
注意: 这个建议是基于你可以在Access里先处理好数据,再把数据发送到MySQL。
5
使用csvfile.reader和csvfile.writer时,内存的使用量并不是和记录的数量成正比的,只要你正确地进行迭代,而不是试图把整个文件都加载到内存里。这就是为什么会有迭代器协议的原因。类似地,csvfile.writer是直接写入磁盘的,它不受可用内存的限制。你可以处理任意数量的记录,而不必担心内存的问题。
对于简单的数据结构,CSV格式是很不错的选择。相比于像XML这样复杂的格式,CSV能更快、更方便地进行增量访问(小提示:pulldom的速度非常慢)。