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