Php 将CSV导入并更新到MySQL

Php 将CSV导入并更新到MySQL,php,mysql,csv,Php,Mysql,Csv,我有一个场景,客户机每天从CSV文件中进行更新/插入,通常是30000到50000行。此CSV将包含新导入以及需要更新现有行的功能 我正在使用PHP/MySQL 目前,我必须检查CSV的每一行,并与数据库中的内容进行比较 这显然需要很长时间 如果数据库中没有任何内容,它会直接导入,这本身就很快 我已经考虑过临时表和联接,但不知道与更新相比,它如何处理新行。将csv数据导入MySQL的选项很少: -在这里,您可以使用--忽略或--替换选项。以下参考手册: --replace和--ignore选

我有一个场景,客户机每天从CSV文件中进行更新/插入,通常是30000到50000行。此CSV将包含新导入以及需要更新现有行的功能

我正在使用PHP/MySQL

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

这显然需要很长时间

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


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

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

  • -在这里,您可以使用
    --忽略
    --替换
    选项。以下参考手册:
--replace
--ignore
选项控制对输入行的处理 在唯一键值上复制现有行。如果您指定
--replace
,新行替换具有相同唯一键值的现有行。如果指定“忽略”,则输入复制 跳过唯一键值上的现有行。如果您没有指定 无论是哪种选项,当发现重复的键值时都会发生错误, 而文本文件的其余部分将被忽略

  • 类似地,在中,还可以指定选项
    忽略
    替换
    :如果指定
    替换
    ,则输入行替换现有行;如果指定忽略,则跳过在唯一键值上复制现有行的输入行

如果使用
LOAD DATA infle
,MySQL数据库处理重复密钥的方式也存在一些差异。但这仅适用于不使用
忽略
替换
选项的情况。

看起来您需要
重复密钥更新
@Mike如果您需要验证输入,并且CSV不包含密钥,该怎么办???使用AutoIncrementOn duplicate key update也可用于文件导入@爸爸,如果判断它是重复的唯一方法是比较所有列,那么你可以添加一个约束,包括除ID之外的所有列。@Mike我只是说如果
CSV
不是100%可靠的来源。。他不能直接导入数据库。。它们仍然需要循环和验证。此外,如果CSV要规范化为多个表,那么可能也会采用另一种方法