On Duplicate使用新键插入新行

时间:2015-07-23 06:28:58

标签: mysql sql

从一个表插入到具有相同格式的另一个表,或将csv文件导入现有表。如果检测到重复的主键,而不是更新现有行,我希望将副本添加为具有新键的新行。这可能是ON DUPLICATE吗?

1 个答案:

答案 0 :(得分:0)

  

ON DUPLICATE可以吗?

不,命令为ON DUPLICATE KEY UPDATE,没有ON DUPLICATE KEY INSERT。

您有选择。

  1. 您可以使用商店程序来完成该操作。 As described on this answer
  2. 如果您只需要填充表格,而不关心导入时中另一个表格中引用的ID (因为它似乎会为某些表格生成新的表格)他们)导入而不用自己插入id。你应该将你的id作为自动增量,数据库将为每条记录分配新的id,此时无需检查重复的id。
  3. 如果由于某种原因,您需要保留除重复项之外的所有原始ID。我强烈建议拆分你的excel:一个没有任何重复,一个只有重复。通过这种方式,可以很容易地导入第一个带有原始ID的导入,并导入第二个没有它们(因此系统为每个导入一个)。