是否有一种通用的方法在MySQL中“插入如果不存在”?

时间:2015-06-19 09:18:15

标签: mysql sql

我有一个数据库转储,它的巨大(近150GB)。我想将此转储数据插入另一个也有数据的模式。有一些相同的行,当我尝试导入此转储时,它们会出现重复输入错误。有没有办法“在导入此转储时插入如果不存在”?

2 个答案:

答案 0 :(得分:1)

您可以使用insert on duplicate key update

insert into table1(id, col1, . . .)
     select id, col1, col2, . . 
     from table2
     on duplicate key update id = values(id);

为此,您需要在id列上使用唯一索引(或约束)。不允许在此列中重复。

on duplicate key部分表示在找到重复项时更新记录。 id = values(id)是无操作。 id被设置为自身,因此它什么都不做,语句的效果就是插入不在原始表中的行。

答案 1 :(得分:0)

好吧,如果我告诉你 - 是的。

您可以在EXCEPT命令中使用INSERT

见这个例子:

INSERT INTO yourTargetTable(name)
    SELECT name
    FROM yourSourceTable
    EXCEPT
    SELECT name
    FROM yourTargetTable