2

我有一个场景,客户端每天更新/插入一个 CSV 文件,该文件通常大约 30,000 到 50,000 行。此 CSV 将包含新的导入以及需要更新现有行的能力。

我正在使用 PHP / MySQL。

目前我必须检查 CSV 的每一行并与数据库中的内容进行比较。

这显然需要很长时间。

如果数据库中没有任何内容,它会直接导入,这本身就很快。

我考虑过临时表和连接,但不知道与更新相比如何处理新行。

4

1 回答 1

0

将 csv 数据导入 MySQL 的选项很少:

  • mysqlimport- 在这里您可以使用--ignore--replace选项。以下参考手册:

--replace--ignore选项控制在唯一键值上重复现有行的输入行的处理。如果您指定 --replace,新行将替换具有相同唯一键值的现有行。如果您指定--ignore,将跳过与唯一键值上的现有行重复的输入行。如果您不指定任一选项,则在找到重复键值时会发生错误,并且文本文件的其余部分将被忽略。

  • 同样,LOAD DATA INFILE 您还可以指定选项IGNOREREPLACE:如果指定REPLACE,输入行替换现有行,如果指定 IGNORE,则跳过与唯一键值上的现有行重复的输入行。

如果您使用LOAD DATA INFILE. 但这仅适用于不使用IGNOREorREPLACE选项的情况。

于 2012-11-08T00:40:58.393 回答