6

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

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

我很感激你的回答。

4

3 回答 3

10

假设这是一个健全性检查,并且您的目标是 0 差异,那么如何将数据库转储为相同格式的 CSV 文件,然后使用命令行工具(diffcmp)检查它们是否匹配?

当然,您需要确保 CSV 转储的排序和格式与原始文件相同。

于 2012-04-16T01:27:25.827 回答
2

除了@therefromhere 的出色答案之外,您还可以在 MySQL 和原始文件中计算哈希值,然后比较两者。

于 2012-04-16T01:36:11.307 回答
0

我自己从未尝试过,但 MySQL 有一个 CSV 表类型。您可以让 MySQL 直接读取文件,就好像它只是另一个数据库表一样。您可能需要先创建一个与您拥有的 CSV 文件匹配的空表,这样 .frm 文件才会在数据目录中创建。然后,您可以将数据目录中的空 .csv 文件替换为您的 CSV 文件。由于您没有进行导入,因此您可能需要运行修复表。

http://dev.mysql.com/doc/refman/5.1/en/csv-storage-engine.html

于 2012-04-16T01:57:05.190 回答