Php 将CSV导入并更新到MySQL
我有一个场景,客户机每天从CSV文件中进行更新/插入,通常是30000到50000行。此CSV将包含新导入以及需要更新现有行的功能 我正在使用PHP/MySQL 目前,我必须检查CSV的每一行,并与数据库中的内容进行比较 这显然需要很长时间 如果数据库中没有任何内容,它会直接导入,这本身就很快Php 将CSV导入并更新到MySQL,php,mysql,csv,Php,Mysql,Csv,我有一个场景,客户机每天从CSV文件中进行更新/插入,通常是30000到50000行。此CSV将包含新导入以及需要更新现有行的功能 我正在使用PHP/MySQL 目前,我必须检查CSV的每一行,并与数据库中的内容进行比较 这显然需要很长时间 如果数据库中没有任何内容,它会直接导入,这本身就很快 我已经考虑过临时表和联接,但不知道与更新相比,它如何处理新行。将csv数据导入MySQL的选项很少: -在这里,您可以使用--忽略或--替换选项。以下参考手册: --replace和--ignore选
我已经考虑过临时表和联接,但不知道与更新相比,它如何处理新行。将csv数据导入MySQL的选项很少:
- -在这里,您可以使用
或--忽略
选项。以下参考手册:--替换
--replace
和--ignore
选项控制对输入行的处理
在唯一键值上复制现有行。如果您指定
--replace
,新行替换具有相同唯一键值的现有行。如果指定“忽略”,则输入复制
跳过唯一键值上的现有行。如果您没有指定
无论是哪种选项,当发现重复的键值时都会发生错误,
而文本文件的其余部分将被忽略
- 类似地,在中,还可以指定选项
或忽略
:如果指定替换
,则输入行替换现有行;如果指定忽略,则跳过在唯一键值上复制现有行的输入行替换
如果使用
LOAD DATA infle
,MySQL数据库处理重复密钥的方式也存在一些差异。但这仅适用于不使用忽略
或替换
选项的情况。看起来您需要重复密钥更新
@Mike如果您需要验证输入,并且CSV不包含密钥,该怎么办???使用AutoIncrementOn duplicate key update也可用于文件导入@爸爸,如果判断它是重复的唯一方法是比较所有列,那么你可以添加一个约束,包括除ID之外的所有列。@Mike我只是说如果CSV
不是100%可靠的来源。。他不能直接导入数据库。。它们仍然需要循环和验证。此外,如果CSV要规范化为多个表,那么可能也会采用另一种方法