2011-09-10 101 views
0

我正在處理一個項目,其中我的要求只是將數據庫從本地服務器更新到目標服務器(所有表,視圖,函數,行和存儲過程)。比較兩個數據庫錶行並插入

現在我想比較本地數據庫表與目標數據庫表,並將新插入的行從本地數據庫插入目標表。

E.g. :我有一個數據庫dbsourcedbDestination,並且都包含表table1。現在我插入新行到dbsource.table1

現在我想比較兩個數據庫表並將新行插入到目標表中。

請幫幫我。

回答

0

假設兩個Table1表都有一個主鍵(唯一)列,您可以通過以下方式實現該功能。我列出了PK列ID:

INSERT INTO DBDESTINATION.<SCHEMA_NAME>.TABLE1 
(SELECT T1.* FROM DBSOURCE.<SCHEMA_NAME>.TABLE1 AS T1 
    LEFT OUTER JOIN DBDESTINATION.<SCHEMA_NAME>.TABLE1 AS T2 ON T1.ID=T2.ID 
    WHERE T2.ID IS NULL) 

希望有幫助。

+0

會是什麼SCHEMA_NAME,當EXEC上面的查詢變得「附近有語法錯誤‘<’。 「 – Anil

+0

schema_name是您的表要記錄的模式的名稱。默認情況下,它是dbo.so DBSOURCE.DBO.TABLE1。如果你將DBO替換爲schema_name(沒有尖括號),你可能會好起來 –

1

爲什麼重新發明輪子?有大量的商業應用,在那裏,已經爲你做這個:

+0

但是爲什麼要爲自己可以做的事情付錢。 –

+0

因爲自己做這個花費你的時間,所以也花錢..... –

+0

如果要比較多對錶格,可能會同意。但是,再次,我寧願吱吱響每一滴可用的功能,而不是使用其他第三方工具。我自己使用Red Gates的SQLPrompt,這是一個驚人的SSMS插件,因爲SQL Server 2005缺少代碼格式化和完成功能。我毫不懷疑,當他們比較兩張桌時,紅門也會採用相同的方式。 –