我有2个数据库:SRC和DST。每个数据库中的每个数据库都包含表格数据,每个数据库中的数据列数相等,但用户不知道(我不知道PK的名称,甚至是PK身份或单身)。
我已经有了以下脚本:
insert into DST.dbo.DATA select * from SRC.dbo.DATA
但是如果DST.DATA包含具有相同PK的行,则会抛出错误(我正在使用C#)。这就是为什么我想使用像
这样的东西on duplicate ignore
来自mysql
请问我建议脚本将SRC.dbo.DATA中的行复制到DST.dbo.DATA,忽略主键约束。如果可能的话,外国的约束也是
抱歉英语不好
答案 0 :(得分:1)
您可以尝试类似
的内容insert into DST.dbo.DATA
select s.*
from SRC.dbo.DATA s LEFT JOIN
DST.dbo.DATA d ON s.Keys1 = d.Keys1
AND s.Keys2 = d.Keys2
...
AND s.KeysN = d.KeysN
WHERE d.Keys1 IS NULL
这应该允许您只插入Source中的值,而不是Destination。
答案 1 :(得分:0)
你可以尝试这样的事情,不要从SRC
中存在的DST
中选择。
insert into DST.dbo.DATA select * from SRC.dbo.DATA
WHERE SRC.dbo.DATA.PKColumn NOT IN(SELECT PKColumn FROM DST.dbo.DATA)