不同数据库表之间的数据同步

不同数据库表之间的数据同步

场景还原: 现在需要对正式环境做升级,需要从实施环境往正式环境导入部分数据,现在需要比对两个数据库之间某个表的数据差异,并将正式环境缺少的部分,从实施环境同步到正式环境。问题就是获取这差异的一部分

思考一下: 如果有差异的数据是有顺序的,比如按照时间顺序、按照主键自增等,找到有差异的部分会很容易。但是两个都不满足呢?
在生产环境上把表备份一下,直接truncate ,将实施环境的所有数据都导入到生成环境就好了?但是生成环境上有一部分数据却发生了修改,直接truncate ? 到底该怎么办呢?

在这里插入图片描述

不卖关子了。。。 直接上干货!


方法一、 借助一张辅助表

使用一个辅助表,将实施环境上的表数据全部插入到辅助表,将辅助表和数据导入到生成环境,在生成环境上比对与辅助表数据差异,找到差异数据,插入到生成环境表即可。最后删除辅助表,结束!但是这个过程我试了一下,花了不少时间。尤其是查找差异的数据的时候,哎,加班到11点过。。。

补充:postgresql 中可以使用外部表功能,但是也需要按照插件,创建外表等过程 https://blog.csdn.net/qq_31156277/article/details/90580804


方法二、 好用的navicat

下次遇到这样的情况,怎么办呢, 突然想到navicat, 之前有用过,只是同步表结构,但是没有使用过数据同步,今天研究了一下,发现贼好用,所以分享一下。

第一步:使用navicat 比对两个表。

在这里插入图片描述

指定需要比对的表,然后点击【预览】,切记不要直接点击【开始】;因为同步数据,会涉及

update 、delete 、insert 。


第二步:点击预览,查看同步表和差异

你需要做的是,先预览,查看预览结果。 关注:同步哪一张表数据,改变情况。这两个点,如下图所示:
在这里插入图片描述

可以看见包含了2条insert,一条delete。 如果遇见有deleteupdate等情况,需要考虑是否可以插入,这一点很重要!!!。如果不想同步delete 、update 。则需要重新设置一下:


第三步: 高级设置

点击【高级】,设置一下,是否需要包含删除和更新记录。

在这里插入图片描述

我去掉了删除和更新,做增量操作。如下所示。
在这里插入图片描述


第四步:开始同步

最后可以点击开始,这样就开始数据同步。 完美的解决了我的问题!


最后用一句话结束: 工具用得好,下班下得早!

发布了274 篇原创文章 · 获赞 119 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/qq_31156277/article/details/90904071
今日推荐