数据库比较方法

现在有这样一个需求:比较两个数据库的差异,数据库的结构差异很小可以忽略,重点是比较数据库表数据。

数据库软件为:postgres。

现在的做法是:

pg_dump -x -O --column-inserts --file db1.sql db1
pg_dump -x -O --column-inserts --file db2.sql db2

导出数据库后,使用文本比较软件,比如beyondCompare进行比较。
可是这种比较不直观,有以下缺点:

  • 无重点,需要逐个差异逐个看,能否先给出差异的表有哪些
  • 不易查看规律,有的字段数据长,有的短,不能发现是某一列有差异
  • 数据量较大时,比较过程很慢

补充:

  1. 数据库模式比较的还比较多,比如liquibase就很好用,github开源免费。
  2. 数据库内容比较的工具有,但都是收费的,且没有开源免费的,也没有mac平台的。
    我决定,自己用jdbc写一个,先实现数据库模式比较和数据库表比较,序列和存储过程比较放在后面。
阅读 5.6k
2 个回答

提供个思路
1、使用dblink,使两个数据库可以相互访问
2、使用存储过程,遍历数据库中的表,进行比较:首先可以比较表的记录数,快速发现有差异的表,比较表内容的话,就需要动态生成sql语句了(需要表有主键才好做匹配)

使用except比较表的差异,这个就需要挨个表做比对,不知道是否能解决你的问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题