SQL Server两表数据同步的多种方法

182 篇文章 0 订阅

本文主要介绍了SQL Server两表数据同步的多种方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一、导读

A表数据同步至B表的场景很常见,比如一个公司有总部及分厂,它们使用相同的系统,只是账套不同。此时,一些基础数据如物料信息,只需要总部录入即可,然后间隔一定时间同步至分厂,避免了重复工作。

二、测试数据

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

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

1

2

TRUNCATE TABLE dbo.StudentB

INSERT INTO dbo.StudentB SELECT * FROM dbo.StudentA

3.2、CHECKSUM

1

2

3

4

5

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

1

2

3

4

5

6

7

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;

到此这篇关于SQL Server两表数据同步的几种方法 的文章就介绍到这了,希望可以对你有所帮助。

转自:微点阅读   https://www.weidianyuedu.com

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值