数据库对比脚本

PHP-DBCompare

项目介绍

找出两个数据库的不同之处:

  • 不同的表
  • 相同表中不同的字段
  • 相同表中不同的索引
  • 相同表中某一字段不同的值

注意: 这里的”不同”是指: src库中有, 但是target库中没有

生成同步用的SQL语句:

  • 新建的表
  • 新建的字段
  • 新建的索引
  • 新插入的数据

注意: 这些SQL会在浏览器页面中显示, 做了简单的css样式美化

使用说明

需要安装PHP7+

调用代码

require('D:\server\code\PHP-DBCompare\DBCompare.php');

DBCompare::ini()
->setExportTable('^[a-z_0-9]+$')
->setExportTable('^(?!.*tmp).*')
->setExportTable('table1|table2|table3')
->build('src', 'db-dev.test.com', 'database', 'user', 'pwd', '3306')
->build('target', 'db-pro.test.com', 'database', 'user', 'pwd', '3306')
->diffSchema()
->diffData('table1', 'id')
->diffData('table2', 'age,name')
->outForBrowser();

其中:

  • build() 比较’src’ 与 ‘target’ 两个数据库的差异
  • setExportTable() 指定参与比较的表名, 传入参数是正则表达式.

    • 例如上边: 表名要是由字母,数字,下划线组成的, 而且不能含有tmp字符串, 而且包含table1或table2或table3字符串; 如果不调用该方法, 表示找到所有表的差异
  • diffSchema() 找到src中比target多出来的表, 缺少的字段, 缺少的索引
  • diffData() 找到src中某个表某个字段比target多出来的值.

    • 例如上边: 分别找到两个数据库中, table1中id字段src多出来的值, table2中age+name字段src多出来的值. 注意注意, 数量不要太大

项目源码

码云

    原文作者:myDCool
    原文地址: https://segmentfault.com/a/1190000016871690
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞