2012-05-24 45 views
4

我有兩個SQL Server數據庫,我需要編寫一個腳本將數據從數據庫A遷移到數據庫B.兩個數據庫都具有相同的模式。在兩個SQL Server數據庫之間遷移數據的腳本

我必須通過表,每個表圈,我必須遵循這些規則:

  1. 如果我遷移的項目並不在目標表中存在(例如,比較是由列Name),然後我直接插入它。
  2. 如果我遷移項目目標表存在,那麼我只需要更新某些列(例如,只更新AgeAddress但不要碰到其他列)

誰能幫我那個腳本?任何示例都可以。非常感謝

編輯:

我只需要爲一個表的例子。無需循環,我可以分別處理每個表(因爲每個表都有自己的比較列和更新列)

回答

7

MERGE語句看起來像它可以幫助你。一個例子:

MERGE StudentTotalMarks AS stm 
USING (SELECT StudentID,StudentName FROM StudentDetails) AS sd 
ON stm.StudentID = sd.StudentID 
WHEN MATCHED AND stm.StudentMarks > 250 THEN DELETE 
WHEN MATCHED THEN UPDATE SET stm.StudentMarks = stm.StudentMarks + 25 
WHEN NOT MATCHED THEN 
INSERT(StudentID,StudentMarks) 
VALUES(sd.StudentID,25); 

MERGE語句可作爲SQL Server 2008中的那麼你是幸運的

+0

如果表格在不同的數據庫中該怎麼辦? – Youssef

+0

嗨Youssef。支持跨不同數據庫進行合併,只需使用完全限定的數據庫名稱即可。更多信息:http://mikebosch.net/2010/08/using-the-merge-t-sql-command-across-databases-on-sql-server-2008/ – buckley

0

而不是創建一個腳本你爲什麼不使用不同的名稱複製源表到目標服務器(需要更新)。

然後只是做一個簡單的插入名稱不存在。

以下是僅適用於步驟1的SQL。

INSERT INTO [TableA] 
SELECT Name, 
     XX, 
     XXXX 
FROM TableB 
WHERE NOT NAME IN(SELECT NAME 
        FROM TableA)