您的位置:首页技术文章
文章详情页

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

【字号: 日期:2023-09-28 21:00:59浏览:3作者:猪猪
目录一、引言二、测试数据三、数据同步方法3.1、TRUNCATE TABLE3.2、CHECKSUM3.3、MERGE INTO一、引言

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

二、测试数据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','赵六','女'三、数据同步方法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--当ON条件成立时,更新数据。 UPDATE SET T.Name=S.Name,T.Sex=S.SexWHEN NOT MATCHED THEN --当源表数据不存在于目标表时,插入数据。 INSERT VALUES (S.ID,S.Name,S.Sex)WHEN NOT MATCHED BY SOURCE THEN --当目标表数据不存在于源表时,删除数据。 DELETE;

到此这篇关于SQL Server两表数据同步的几种方法 的文章就介绍到这了,更多相关SQL Server两表数据同步内容请搜索好吧啦网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好吧啦网!

标签: MsSQL 数据库
相关文章: