SQL Server两表数据同步的多种方法
				
									
					
					
						|  | 
							admin 2023年9月15日 15:52
								本文热度 1795 | 
					
				 
				
本文主要介绍了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 | createTABLEStudentA
 (
     ID VARCHAR(32),
     NameVARCHAR(20),
     Sex VARCHAR(10)
 )
 GO
 insertINTOStudentA (ID,Name,Sex)
 select'1001','张三','男'
 union
 select'1002','李四','男'
 union
 select'1003','王五','女'
 GO
 createTABLEStudentB
 (
     ID VARCHAR(32),
     NameVARCHAR(20),
     Sex VARCHAR(10)
 )
 GO
 insertINTOStudentB (ID,Name,Sex)
 select'1001','张三','女'
 union
 select'1002','李四','女'
 union
 select'1003','王五','女'
 union
 select'1004','赵六','女'
 | 
三、数据同步方法
3.1、truncate TABLE
| 1 2 | truncateTABLEdbo.StudentB
 insertINTOdbo.StudentB select* fromdbo.StudentA
 | 
3.2、CHECKSUM
| 1 2 3 4 5 | deletefromdbo.StudentB whereNOTEXISTS (select1 fromdbo.StudentA whereID=dbo.StudentB.ID)
 updateB SETB.Name=A.Name,B.Sex=A.Sex
 fromdbo.StudentA A INNERJOINdbo.StudentB B ONA.ID=B.ID
 whereCHECKSUM(A.Name,A.Sex)<>CHECKSUM(B.Name,B.Sex)
 insertINTOdbo.StudentB select* fromdbo.StudentA whereNOTEXISTS (select1 fromdbo.StudentB whereID=dbo.StudentA.ID)
 | 
3.3、MERGE INTO
| 1 2 3 4 5 6 7 | MERGE INTOdbo.StudentB AST USING dbo.StudentA ASS ONT.ID=S.ID
 WHENMATCHED THEN--当ON条件成立时,更新数据。
     updateSETT.Name=S.Name,T.Sex=S.Sex
 WHENNOTMATCHED THEN--当源表数据不存在于目标表时,插入数据。
     insertVALUES(S.ID,S.Name,S.Sex)
 WHENNOTMATCHED BYSOURCE THEN--当目标表数据不存在于源表时,删除数据。
     delete;
 | 
到此,这篇关于SQL Server两表数据同步的几种方法的文章就介绍到这了,希望可以对你有所帮助。
该文章在 2023/9/15 15:52:55 编辑过