一、引言
A表資料同步至B表的場景很常見,比如一個公司有總部及分廠,它們使用相同的系統,只是賬套不同,此時,一些基礎資料如物料資訊,只需要總部錄入即可,然后間隔一定時間同步至分廠,避免了重復作業,
二、測驗資料
CREATE TABLE StudentA ( ID VARCHAR(32), Name VARCHAR(20), Sex VARCHAR(10) ) GO INSERT INTO StudentA (ID,Name,Sex) SELECT '1001','張三','男' UNION SELECT '1002','李四','男' UNION SELECT '1003','王五','女' GO CREATE TABLE StudentB ( ID VARCHAR(32), Name VARCHAR(20), Sex VARCHAR(10) ) GO INSERT INTO StudentB (ID,Name,Sex) SELECT '1001','張三','女' UNION SELECT '1002','李四','女' UNION SELECT '1003','王五','女' UNION SELECT '1004','趙六','女'
三、資料同步方法
3.1、TRUNCATE TABLE
TRUNCATE TABLE dbo.StudentB INSERT INTO dbo.StudentB SELECT * FROM dbo.StudentA
3.2、CHECKSUM
DELETE FROM dbo.StudentB WHERE NOT EXISTS (SELECT 1 FROM dbo.StudentA WHERE ID=dbo.StudentB.ID) UPDATE B SET B.Name=A.Name,B.Sex=A.Sex FROM dbo.StudentA A INNER JOIN dbo.StudentB B ON A.ID=B.ID WHERE CHECKSUM(A.Name,A.Sex)<>CHECKSUM(B.Name,B.Sex) INSERT INTO dbo.StudentB SELECT * FROM dbo.StudentA WHERE NOT EXISTS (SELECT 1 FROM dbo.StudentB WHERE ID=dbo.StudentA.ID)
3.3、MERGE INTO
MERGE INTO dbo.StudentB AS T USING dbo.StudentA AS S ON T.ID=S.ID WHEN MATCHED THEN --當ON條件成立時,更新資料, UPDATE SET T.Name=S.Name,T.Sex=S.Sex WHEN NOT MATCHED THEN --當源表資料不存在于目標表時,插入資料, INSERT VALUES (S.ID,S.Name,S.Sex) WHEN NOT MATCHED BY SOURCE THEN --當目標表資料不存在于源表時,洗掉資料, DELETE;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/472941.html
標籤:其他
