文章詳情頁
SQL Server兩表數(shù)據(jù)同步的多種方法詳解
瀏覽:3日期:2023-09-28 21:00:59
目錄一、引言二、測試數(shù)據(jù)三、數(shù)據(jù)同步方法3.1、TRUNCATE TABLE3.2、CHECKSUM3.3、MERGE INTO一、引言
A表數(shù)據(jù)同步至B表的場景很常見,比如一個(gè)公司有總部及分廠,它們使用相同的系統(tǒng),只是賬套不同。此時(shí),一些基礎(chǔ)數(shù)據(jù)如物料信息,只需要總部錄入即可,然后間隔一定時(shí)間同步至分廠,避免了重復(fù)工作。
二、測試數(shù)據(jù)CREATE TABLE StudentA( ID VARCHAR(32), Name VARCHAR(20), Sex VARCHAR(10))GOINSERT INTO StudentA (ID,Name,Sex)SELECT '1001','張三','男'UNIONSELECT '1002','李四','男'UNIONSELECT '1003','王五','女'GOCREATE TABLE StudentB( ID VARCHAR(32), Name VARCHAR(20), Sex VARCHAR(10))GOINSERT INTO StudentB (ID,Name,Sex)SELECT '1001','張三','女'UNIONSELECT '1002','李四','女'UNIONSELECT '1003','王五','女'UNIONSELECT '1004','趙六','女'三、數(shù)據(jù)同步方法3.1、TRUNCATE TABLETRUNCATE TABLE dbo.StudentBINSERT INTO dbo.StudentB SELECT * FROM dbo.StudentA3.2、CHECKSUMDELETE 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.SexFROM dbo.StudentA A INNER JOIN dbo.StudentB B ON A.ID=B.IDWHERE 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 INTOMERGE INTO dbo.StudentB AS T USING dbo.StudentA AS S ON T.ID=S.IDWHEN MATCHED THEN--當(dāng)ON條件成立時(shí),更新數(shù)據(jù)。 UPDATE SET T.Name=S.Name,T.Sex=S.SexWHEN NOT MATCHED THEN --當(dāng)源表數(shù)據(jù)不存在于目標(biāo)表時(shí),插入數(shù)據(jù)。 INSERT VALUES (S.ID,S.Name,S.Sex)WHEN NOT MATCHED BY SOURCE THEN --當(dāng)目標(biāo)表數(shù)據(jù)不存在于源表時(shí),刪除數(shù)據(jù)。 DELETE;到此這篇關(guān)于SQL Server兩表數(shù)據(jù)同步的幾種方法 的文章就介紹到這了,更多相關(guān)SQL Server兩表數(shù)據(jù)同步內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
標(biāo)簽:
MsSQL
數(shù)據(jù)庫
相關(guān)文章:
排行榜
