同一服务器两个不同数据库之间数据的同步(两库中的表名,字段名不一样)在线等待----

时间:2021-05-14 07:54:04
查了一圈帖子,头也大了,还是没找到很合适的方法
请大家帮我分析下,谢谢了
--------------
同一台机子两个不同数据库之间,假设a库和b库,他们中有大概20个表需要数据同步
我以两库其中一个表为例,a库中表table1(字段1,字段2...),b库中的表table2(字段3,字段4....).注意:table1,table2他们表名和字段名都不相同,但我需要把他们中一些字段的数据同步。

这样估计就不能用复制功能了,因为结构都不一样。
看到了网上这种问题很多建议使用触发器,在这里想详细的问一下:

触发器是a库有数据插入或更新,b库也跟着同样操作,这个原本可以满足,但是有个问题,a库中有很多历史数据,b库是新库,这是不是只能保证新插入的数据同步,历史数据我怎么让他也全部到b库,另外这样20个表同步每个都写触发器,这样效率会不会受影响?

求求大家了,项目很急哦,总的来说就是这样子:
把a库的表历史数据全部插入到b库,并且a库表新增的数据也同步到b库表,a库表中这些历史数据以及新来数据怎么样才能完全毫无遗漏的搬到b库表中?

在线等待,请大家仔细看了在解答,不要复制一堆就走人哦,提出一个好的解决问题的办法,谢谢大家了


7 个解决方案

#1


表名,字段名都不一样,如何同步?

在一个数据库中做视图,直接查询另一个库的数据行不行?

#2


可以先把历史数据insert into 再用触发器同步
或用共用一表
写个视图等

#3


我也不想啊,别人要求这么干,没办法,就是相当于把一个旧表中数据插入到一个新表,只是字段名不一样,我不知道怎么把a库这一堆历史数据弄过来,因为a库每天还有新数据进来。。

#4


爱多vcd的方法我也正在考虑
我的想法是这样的,先用存储过程把历史数据全部insert 到新库,对于新来的数据再用触发器控制同步,可我不知道中间是否会有数据缺失,因为这个a库也一直在插入数据,搞得郁闷啊
简直是源源不断进来啊,这要怎么来个判断啊

#5


1.先把数据插入到B库BB表(其他表一样)
  insert into B..BB(col1,col2....) select col1,col2... from AA
2.在A库AA表中做个触发器(需要同步数据的表都做).
一旦有数据插入,就把数据同时插入到B库BB表中.
字段名选则好.

create trigger my_trig on AA for insert
as
  insert into B..BB(col1,col2....) select col1,col2... from AA
go

#6


谢谢爱多vcd和老乌龟........  :)
看来只有这样了,只是这个地方我怎么分开哪些是历史数据,哪些是刚进来

插入历史数据肯定要花点时间,数据超级多,这时候触发器还没加上,不少数据已经进来了
就丢失了数据了,各位有没有好的想法,不是我追求完美,而是这些数据比较重要,丢失了我就不好说话了,再搞不好,我就要改行了,呵呵

#7


通用文件和数据库同步软件《同步专家网络版》

数据库同步演示文件:
http://www.datsync.net/down.asp?file=download/dat演示.rar&name=数据库同步演示
软件下载:
http://www.ahjoe.com/prodnet.asp
文件同步教程:
http://www.ahjoe.com/netdoc.htm

特点:
  通过ODBC访问数据库所以可以支持绝大多数数据库类型。支持不同类型数据库之间数据同步,只要有相应数据库的ODBC驱动程序即可。可自定义需要同步的字段。可限定需要同步的记录的时间范围。可选择数据压缩传输,使得在低带宽条件下也能有较好的速度。


注:字段名称要相同。

#1


表名,字段名都不一样,如何同步?

在一个数据库中做视图,直接查询另一个库的数据行不行?

#2


可以先把历史数据insert into 再用触发器同步
或用共用一表
写个视图等

#3


我也不想啊,别人要求这么干,没办法,就是相当于把一个旧表中数据插入到一个新表,只是字段名不一样,我不知道怎么把a库这一堆历史数据弄过来,因为a库每天还有新数据进来。。

#4


爱多vcd的方法我也正在考虑
我的想法是这样的,先用存储过程把历史数据全部insert 到新库,对于新来的数据再用触发器控制同步,可我不知道中间是否会有数据缺失,因为这个a库也一直在插入数据,搞得郁闷啊
简直是源源不断进来啊,这要怎么来个判断啊

#5


1.先把数据插入到B库BB表(其他表一样)
  insert into B..BB(col1,col2....) select col1,col2... from AA
2.在A库AA表中做个触发器(需要同步数据的表都做).
一旦有数据插入,就把数据同时插入到B库BB表中.
字段名选则好.

create trigger my_trig on AA for insert
as
  insert into B..BB(col1,col2....) select col1,col2... from AA
go

#6


谢谢爱多vcd和老乌龟........  :)
看来只有这样了,只是这个地方我怎么分开哪些是历史数据,哪些是刚进来

插入历史数据肯定要花点时间,数据超级多,这时候触发器还没加上,不少数据已经进来了
就丢失了数据了,各位有没有好的想法,不是我追求完美,而是这些数据比较重要,丢失了我就不好说话了,再搞不好,我就要改行了,呵呵

#7


通用文件和数据库同步软件《同步专家网络版》

数据库同步演示文件:
http://www.datsync.net/down.asp?file=download/dat演示.rar&name=数据库同步演示
软件下载:
http://www.ahjoe.com/prodnet.asp
文件同步教程:
http://www.ahjoe.com/netdoc.htm

特点:
  通过ODBC访问数据库所以可以支持绝大多数数据库类型。支持不同类型数据库之间数据同步,只要有相应数据库的ODBC驱动程序即可。可自定义需要同步的字段。可限定需要同步的记录的时间范围。可选择数据压缩传输,使得在低带宽条件下也能有较好的速度。


注:字段名称要相同。