合併兩個 SQL Server 數據庫
我想將數據從一個 SQL Server DB 導入到另一個。兩個數據庫具有相同的表定義等,但數據不同。主鍵是自動遞增的,因此相同的主鍵將引用兩個數據庫中的不同數據。
插入第一個數據庫時,我需要更新第二個數據庫中的主鍵(顯然,任何引用它們的外鍵)。我現在不在乎數據是否重複。有沒有辦法做到這一點?
你沒說什麼版本。由於我們討論的是 SQL Server,因此有幾種方法可以解決此問題。如果您使用的是 SQL Server 2005/2008,最簡單的方法可能是使用 SQL Server Management Studio 中的導入數據功能。實際上,它的作用是創建一個 SSIS 包,允許您將數據引入組合數據庫。這是一種簡單的 SSIS 包方法,因此外鍵可能是個問題。
如果做不到這一點,另一種選擇是使用 bcp 從表中導出數據,但是,沒有主鍵/外鍵引用。這會將數據放入文本文件中。此時,您可以使用 BULK INSERT 將數據帶入組合數據庫。這裡有一個警告,如果外鍵所在的列不允許 NULL,那麼這種方法將會有問題。
第三種選擇是自己編寫腳本,這也很容易做到。如果您的 SQL Server 上還沒有第二個數據庫,您可以將它附加到組合數據庫所在的 SQL Server。連結伺服器連接也可以工作,但總體上會慢得多。然後您可以相應地編寫您的 INSERT 語句,而忽略主鍵欄位。對於具有外鍵引用的表,只要以正確的順序載入表,就可以使用 JOIN 來獲取引用的正確值。
第四個選項是建構自定義 SSIS 包並按順序載入表,並相應地進行查找以確保您擁有正確的外鍵引用值。這比第一步要復雜一些,但它會確保你做對了。此外,如果您必須重複此練習,您將已經擁有該軟體包。另一個優點是它不需要您創建連結伺服器連接,並且它將使用最快的插入方法到組合數據庫中。