如何执行SQL查询跳过错误?

时间:2016-12-06 13:14:49

标签: mysql sql

我尝试使用命令行从sql文件导入表数据。 此数据内容在归档url中重复。

但表中的字段url是唯一的。因此,当我尝试插入数据时,我收到错误“Dublicate entry”

如何导入所有跳过此错误的数据?

4 个答案:

答案 0 :(得分:2)

您可以使用--force(-f)标志。

mysql -u userName -p -f -D dbName < script.sql

来自man mysql

  

· - force,-f

     

即使发生SQL错误也继续。

答案 1 :(得分:1)

  • 创建一个与目标结构相同的临时表 表但没有约束(包括唯一索引)。
  • 手动检查重复项并确定您想要的方式 在重复行/合并行之间进行选择。
  • 编写相应的查询并使用“insert into ... select ...”。

答案 2 :(得分:0)

  

如何导入所有跳过此错误的数据?

暂停索引 - &gt;运行批量插入 - &gt;重新创建索引

答案 3 :(得分:0)

如果您使用的是insert,则可以使用ignore erroron duplicate key update忽略错误(最好是因为它只会忽略重复的密钥错误)。

如果您使用load data infile,则可以使用ignore关键字。如documentation

中所述
  

如果指定IGNORE,则复制现有行的行   唯一键值被丢弃。有关更多信息,请参阅比较   IGNORE关键字和严格SQL模式。

或者,按照我通常的方式行事:

  • 将数据加载到临时表中。
  • 验证登台表,仅将相应的数据加载到最终表格中。