0

我有 2 个数据库:SRC 和 DST。每个都包含表 DATA 一个在每个数据库 DATA 的列集是相等的,但它是未知的用户(我不知道 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 忽略主键约束的脚本。如果可能的话,外国的限制也是如此

对不起英语不好

4

2 回答 2

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 中。

于 2012-09-19T13:21:36.383 回答
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) 
于 2012-09-19T13:21:17.260 回答