mysql 与 LOAD DATA INFILE 重复

使用 LOAD DATA INFILE 时,是否有办法标记重复行,或将任何/所有重复行转储到单独的表中?

When using LOAD DATA INFILE, is there a way to either flag a duplicate row, or dump any/all duplicates into a separate table?

推荐答案

来自 加载日期 INFILE 文档:

REPLACE 和 IGNORE 关键字控制输入行的处理在唯一键值上重复现有行:

The REPLACE and IGNORE keywords control handling of input rows that duplicate existing rows on unique key values:

  • 如果您指定 REPLACE,则输入行将替换现有行.换句话说,主键或唯一索引的值与现有行相同的行.参见第 12.2.7 节,替换语法".李>
  • 如果您指定 IGNORE,则会跳过与唯一键值上的现有行重复的输入行.如果您不指定任一选项,则行为取决于是否指定了 LOCAL 关键字.如果没有 LOCAL,则在找到重复键值时会发生错误,并忽略文本文件的其余部分.对于 LOCAL,默认行为与指定 IGNORE 相同;这是因为服务器无法在操作过程中停止传输文件.

实际上,没有办法将重复记录重定向到不同的表.您必须将它们全部加载,然后创建另一个表来保存非重复记录.

Effectively, there's no way to redirect the duplicate records to a different table. You'd have to load them all in, and then create another table to hold the non-duplicated records.

相关文章