我正在將資料從一個資料庫復制到另一個使用Insert....select.
現在,沒關系,但是如果源資料庫編輯了某些內容并且我希望它在目標資料庫表中更新,那么這將是一個問題。
我有幾個解決方案:
如果記錄存在(將使用我們擁有的 GUID 進行驗證),則洗掉它及其子資料并再次插入所有新的更新資料。
取表的并集
SELECT * FROM SourceDb.dbo.Table1 UNION SELECT * FROM TargetDb.dbo.Table2
如果您獲得的記錄大于兩個表中的任何一個,則它們沒有相同的資料,需要洗掉并重新添加。
但問題是我有大約 1 個父表和大約 7 個子表,因此使用 union 進行檢查和檢查需要一些額外的編碼。
我該怎么辦?
uj5u.com熱心網友回復:
驗證集合 A = 集合 B 的一般查詢是:
A - B U B - A = ? (set theory)
您可以使用上面的查詢:
WITH
TA AS (SELECT * FROM databaseA.SchemaA.TableA),
TB AS (SELECT * FROM databaseB.SchemaB.TableB)
SELECT * FROM TA
EXCEPT
SELECT * FROM TB
UNION ALL
SELECT * FROM TB
EXCEPT
SELECT * FROM TA;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/361943.html
