0

SRC と DST の 2 つのデータベースがあります。それぞれにテーブルDATAが含まれており、すべてのデータベースのDATAの列セットは同じですが、ユーザーには不明です(PKの名前がわからないか、PK IDまたは単一でさえありません)。

私はすでに次のスクリプトを持っています:

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

これにより、宛先にないソースからの値のみを挿入できるようになります。

于 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 に答える