2016-12-06 215 views
2

我尝试使用命令行从sql文件导入表数据。 此数据内容重复在url如何执行SQL查询跳过错误?

但表中的字段url是唯一的。所以当我试图插入数据时,我得到错误“Dublicate entry”

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

+0

您应该可能导入到新表中,并且只插入唯一记录。 – HoneyBadger

+2

显示您正在使用的代码。 –

+0

如何执行此操作?创建一个表以及如何插入唯一的行? – MisterPi

回答

1

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

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

man mysql

·--force,-f

继续即使出现SQL错误。

0

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

删除索引的时间是 - >运行批量插入 - >重新创建索引回

+0

你的意思是删除唯一索引吗? – MisterPi

+0

'重新创建索引'将失败 –

0

如果使用insert时,您可以使用ignore erroron duplicate key update(可取的,因为它只是忽略重复键错误)忽略错误。

如果您使用的是load data infile,那么您可以使用ignore关键字。正如documentation描述:

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

或者说,我通常会做:

  • 将数据加载到一个临时表。
  • 验证登台表并仅将适当的数据加载到最终表中。
1
  • 创建临时表具有相同的结构作为目标 表,但没有约束(包括唯一索引)。
  • 手动检查重复项,并决定您想要如何在重复行/合并行之间选择 。
  • 编写相应的查询并使用“insert into ... select ...”。