我正在尝试找到一种方法来有效地将CSV文件内容与MySQL数据库进行比较(超过1百万行进行比较),在将所有行放入数组之前我做了类似的事情,但这样可行因内存过载导致少量行。
我的问题是,有没有可行的方法来做到这一点?任何图书馆或其他可以提供帮助的东西?
我会说出你的答案。
答案 0 :(得分:10)
假设这是一个完整性检查,并且您的目标是有0个差异,那么如何将数据库转储为相同格式的CSV文件,然后使用命令行工具(diff
或{{3} })检查它们是否匹配?
您需要确保您的CSV转储已订购&格式化与原始文件格式相同。
答案 1 :(得分:2)
除了@herehere的优秀答案之外,您还可以在MySQL和原始文件中计算哈希值,然后比较两者。
答案 2 :(得分:0)
我自己从未尝试过,但MySQL有一个CSV表类型。您可以让MySQL直接读取文件,就像它只是另一个数据库表一样。您可能需要首先创建一个与您拥有的CSV文件匹配的空表,以便在数据目录中创建.frm文件。然后,您可以使用CSV文件替换数据目录中的空.csv文件。您可能需要运行修复表,因为您没有导入。
http://dev.mysql.com/doc/refman/5.1/en/csv-storage-engine.html