我有一个CSV文件,我正在尝试加载到我的mysql数据库中。该文件大于10MB且超过100,000行。我需要一种有效的方法来检查数据库中是否已存在行,并添加新条目。它用于使用来自另一个第三方数据库的最新数据更新数据库。
逐行检查并逐行添加似乎效率很低。 此外,如果有帮助,CSV文件会有一个日期字段。
答案 0 :(得分:0)
首先,我要准备数据库表以获得索引和唯一键。
然后,我会逐行解析CSV。如果重复,数据库将不接受该值,您的脚本将继续。
如果您的CSV没有唯一的字段,您可以根据该行的所有数据字段创建一个哈希值,并将其用作唯一键。 您可以使用以下内容生成唯一键:
md5(field1 + ":" + field2 + ":" + ... + ":" + fieldN)
答案 1 :(得分:0)
我可以想到两个简单的选择。 查询DB 1时间并将整个结果集存储在id-keyed数组
上$data[$queryResult['fieldID']] = $queryResult;
并使用它来快速验证每个字段。 或者您可以使用INSERT IGNORE(将忽略该字段已存在的警告并继续下一个)