我們有一箇舊數據庫,我們維護一個新數據庫,並且已經開始使用一個新數據庫。我們需要定期將數據從舊數據庫傳輸到新數據庫。目前,我們需要傳輸或合併,因爲它也可能被稱爲數據從一張表中 - 學生,舊數據庫中的兩張表格(即兩個目標)在新的一個 - 人和學生。現在的問題是,來自舊的源數據庫的數據應該在新數據庫中的兩個表中進行分配。例如(只是爲了這個帖子的緣故),SQL將源表中的n行合併到兩個目標
舊錶 '學生'
------------------------------
IdNo | FirstName | LastName |
578 | John | Doe |
645 | Sara | Doe |
新表 '人'
-----------
Id | IdNo |
11 | 578 |
23 | 645 |
新表 '學生'
--------------------------------------
Id | PersonId | FirstName | LastName |
101| 11 | John | Doe |
102| 23 | Sara | Doe |
並且該過程應該採用要合併的行數的參數。
這怎麼能完成?
更新
,也許會更容易讓你們知道我的僞代碼的含義是:
MERGE [NewDB].[dbo].[Person] p, [NewDB].[dbo].[Student] ns -- 2 targets, this does not work
USING [OldDB].[dbo].[student] os -- source table, old student
ON p.IdNo = s.IdNo
WHEN MATCHED THEN -- Update existing rows
UPDATE p
SET p.SomeCoumn1 = os.SomeColumn1 -- works. os (old student) is know here
UPDATE ns
SET ns.SomeColumn2 = os.SomeColumn2 -- Does not work. os is not known here
WHEN NOT MATCHED BY TARGET THEN -- Add new rows
INSERT INTO p (IdNo, SomeOlumn1)
VALUES (os.Idno, os.SomeColumn1); -- os (old Studnet) is known here
INSERT INTO ns (SomeColumn2)
VALUES (os.SomeColumn2); -- Does not work. os is not knwon here
我希望這使得它更爲清楚。
你到目前爲止嘗試了什麼? –
哪裏來的人物? –
爲什麼不把名字和姓氏放在新人表中呢? – jarlh