我有一个场景,客户端每天都有CSV文件的更新/插入,通常大约有30,000到50,000行。此CSV将包含新导入以及需要更新现有行的功能。
我使用的是PHP / MySQL。
目前,我必须检查CSV的每一行,并与数据库中的内容进行比较。
这显然需要很长时间。
如果数据库中没有任何内容,则直接导入本身就很快。
我已经考虑了临时表和连接,但不知道与更新相比,新行如何使用。
答案 0 :(得分:0)
您可以选择将csv数据导入MySQL:
mysqlimport
- 您可以在此处使用--ignore
或--replace
选项。以下参考手册:
--replace
和--ignore
选项控制输入行的处理 复制唯一键值上的现有行。如果你指定--replace
,新行替换具有相同唯一键值的现有行。如果指定--ignore
,则输入复制的行 跳过唯一键值上的现有行。如果你没有指定 任一选项,找到重复键值时发生错误, 并忽略文本文件的其余部分。
LOAD DATA INFILE
中,您还可以指定选项IGNORE
或REPLACE
:如果指定REPLACE
,则输入行将替换现有行,如果指定IGNORE,则输入行将跳过复制唯一键值的现有行。如果您使用LOAD DATA INFILE
,MySQL数据库如何处理重复键也存在一些差异。但这仅适用于不使用IGNORE
或REPLACE
选项的情况。