欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SQL Server兩表數(shù)據(jù)同步的多種方法詳解

 更新時(shí)間:2023年06月13日 15:28:44   作者:縹緲的塵埃  
這篇文章主要介紹了SQL Server兩表數(shù)據(jù)同步的多種方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、引言

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)
)
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','趙六','女'

三、數(shù)據(jù)同步方法

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                --當(dāng)ON條件成立時(shí),更新數(shù)據(jù)。
    UPDATE SET T.Name=S.Name,T.Sex=S.Sex
WHEN 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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論