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