SQL 利用merge 同步数据库之间表的数据
来源:互联网 发布:y系列电机铁芯数据大全 编辑:程序博客网 时间:2024/05/29 04:06
同步两个数据库之间两表的数据也许的数据库管理员偶尔需要做的一件事情,下面来记录一下常用的两种方法:
方法一:使用delete、truncate
方法二:使用 merge into ,Merge是在SQL Server 2008被引入,它能将Insert,Update,Delete简单的并为一句。根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。通过这个描述,我们 可以看出Merge是关于对于两个表之间的数据进行操作的。
可以想象出,需要使用Merge的场景比如:
- 数据同步
- 数据转换
- 基于源表对目标表做Insert,Update,Delete操作
下面是我把公司正式库里的产品信息表同步到测试库里面的两种方法:
方法一:
1)Truncate F_test..biitm01t 清空表数据
2)insert F_Test..biitm01t select * from F_Formal..biitm01t 把正式库的产品信息插入到test库里面。
方法二:首先获取到产品信息表的相关所有列
SELECT
表名=case when a.colorder=1 then d.name else '' end,
字段名=a.name
FROM syscolumns a
left join systypes b on a.xusertype=b.xusertype
inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join syscomments e on a.cdefault=e.id
left join sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id
left join sys.extended_properties f on d.id=f.major_id and f.minor_id=0
where d.name='biitm01t'
order by a.id,a.colorder
你也可以直接 select * from 表 然后一个列一个列记录下(会很累),通过以上方法直接复制所有字段名,方便以下运用。
得出相关表的所有列名后,下面就是运用到merge into 里面去了。快速运用表字段进行粘贴到merge 里面的方法是:将所有字段复制粘贴到excel里面,然后用EXCEL & 符号合并增加字符号,如图 ,直接复制excel里面值粘贴进去,就不用一个一个输了。
merge into F_test..biitm01t as t
using F_Formal..biitm01t as s
on t.itemcd=s.itemcd
when matched --------------------当上面on 条件相同时,目标表(F_Formal..biitm01t)的数据被更新
then update set
t.itemcd=s.itemcd,
t.itemnm=s.itemnm,
t.itemnm2=s.itemnm2,
t.itemkind=s.itemkind,
t.pogbn=s.pogbn,
t.pjtcd=s.pjtcd
when not matched ------------------目标表中没有的itemcd,在源表(F_Test)中有,则这些行插入到目标表
then insert values (
s.itemcd,
s.itemnm,
s.itemnm2,
s.itemkind,
s.pogbn,
s.pjtcd
)
when not matched by source ------目标表存在而源表不存在的数据行,则删除目标表中的这些行
then delete;
运行以上代码成功后,F_Test 库里面的biitm01t 表就跟正式库里面 的biitm01t 表的数据一样了。
备注:上面的Merge关键字后面使用了多个WHEN…THEN语句,而这个语句是可选的.也可以仅仅新增或是仅仅删除,当然第一种方法比较简便,但如果当时的数据被人使用的情况下,使用delete 的方法会给用户带来不便,根据实际情况而定。
- SQL 利用merge 同步数据库之间表的数据
- SQL Server-使用Merge语句实现表数据之间的对比同步
- 数据库增量同步(二台SQL Server服务器的数据库之间增量传输数据)(jaime原创)
- 利用DBLink+JOB实现两个Oracle数据库之间的数据同步
- 利用DBLink+JOB实现两个Oracle数据库之间的数据同步
- 不同数据库,表之间数据的同步。oracle
- 实现两个数据库之间的数据同步
- 不同Oracle数据库之间的数据同步
- SQL Server 2008 R2 数据库之间的数据同步热备份
- 利用数据库复制技术 实现MS-SQL数据同步更新
- SQL SERVER2000利用数据库复制技术 实现数据同步更新
- 使用时间戳+merge 进行两个表之间的同步
- Oracle数据库之间数据同步
- oracle数据库之间数据同步
- 不同服务器数据库之间的数据操作,数据同步
- sql数据库之间的数据交换
- 多台sql server 服务器之间数据的同步(转载)
- 不同服务器数据库之间的数据同步操作
- java实现:快速排序,基数排序,计数排序,归并排序,堆排序,希尔排序
- Activity
- Gym
- H5 页面写法
- 蒋步星:自助报表难自助,敏捷BI难敏捷
- SQL 利用merge 同步数据库之间表的数据
- java网络编程____httpclient多线程请求和线程池
- ubuntu16.10固定ip配置
- 光照模型
- Spring bean 的初始化和销毁的三种方式和执行顺序
- Swift
- Hibernate 的三种查询方式:HQL、Criteria、Sql
- JavaScript中的==与===的区别
- Android 从应用程序跳到系统应用管理和应用的权限管理页面