从CSV文件中读取并添加到数据库中,排除重复项

时间:2013-02-22 18:13:03

标签: php mysql csv

我有一个CSV文件,我正在尝试加载到我的mysql数据库中。该文件大于10MB且超过100,000行。我需要一种有效的方法来检查数据库中是否已存在行,并添加新条目。它用于使用来自另一个第三方数据库的最新数据更新数据库。

逐行检查并逐行添加似乎效率很低。 此外,如果有帮助,CSV文件会有一个日期字段。

2 个答案:

答案 0 :(得分:0)

首先,我要准备数据库表以获得索引和唯一键。

然后,我会逐行解析CSV。如果重复,数据库将不接受该值,您的脚本将继续。

如果您的CSV没有唯一的字段,您可以根据该行的所有数据字段创建一个哈希值,并将其用作唯一键。 您可以使用以下内容生成唯一键:

md5(field1 + ":" + field2 + ":" + ... + ":" + fieldN)

答案 1 :(得分:0)

我可以想到两个简单的选择。 查询DB 1时间并将整个结果集存储在id-keyed数组

$data[$queryResult['fieldID']] = $queryResult;

并使用它来快速验证每个字段。 或者您可以使用INSERT IGNORE(将忽略该字段已存在的警告并继续下一个)