检查大型CSV文件(1m行)是否与MySQL表具有相同的数据

时间:2012-04-16 01:15:38

标签: php mysql csv

我正在尝试找到一种方法来有效地将CSV文件内容与MySQL数据库进行比较(超过1百万行进行比较),在将所有行放入数组之前我做了类似的事情,但这样可行因内存过载导致少量行。

我的问题是,有没有可行的方法来做到这一点?任何图书馆或其他可以提供帮助的东西?

我会说出你的答案。

3 个答案:

答案 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