SQL Server两表数据同步的多种方法
|
admin
2023年9月15日 15:52
本文热度 400
|
本文主要介绍了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两表数据同步的几种方法的文章就介绍到这了,希望可以对你有所帮助。
该文章在 2023/9/15 15:52:55 编辑过