2012-09-19 22 views
0

我有2個數據庫:SRC和DST。每個數據庫中的每個數據表都包含一個數據表,每個數據庫的數據列集是相同的,但用戶不知道(我不知道PK的名稱,甚至是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

你可以嘗試這樣的事情,不從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) 
+0

謝謝你的迴應,但問題是我不知道列設置爲表。我不知道表DATA的主鍵(因爲我真的重複這個動作20-40個不同的表) – Alex

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 

這應該只允許您從源代碼中插入值,不在目標。

+0

選擇s。*爲什麼評論必須是15個字符的長度? – Paparazzi

+0

@Blam謝謝,這是正確的。 –

+0

謝謝你的迴應,但問題是我不知道表格的列集。我不知道表DATA的主鍵(因爲我真的對20-40個不同的表重複此操作) – Alex

相關問題