在实际开发过程中,我们常常会在测试环境或者开发环境的数据库中单独修改一些字段的属性,这时,如果我们想要了解这两个环境的字段有哪些差异,如果数据库表少还好,可以一个个对比,但是当表的数量比较多的时候,就比较头疼了
下面这两个是我工作中常用的比对数据库字段的名称、默认值和索引的SQL,非常好用!:
SELECT CONCAT(jpColumns.table_name,'|',jpColumns.COLUMN_NAME) AS '表名 | 字段名', jpColumns.COLUMN_DEFAULT AS '字段默认值'
FROM information_schema.TABLES AS jpTables,information_schema.COLUMNS AS jpColumns
WHERE jpTables.table_schema = 'smarthomedb' AND jpTables.table_name = jpColumns.table_name
ORDER BY 1;
SELECT CONCAT(table_name,'|',column_name,) AS '表名 | 字段名', index_name AS '字段索引' FROM information_schema.STATISTICS WHERE table_schema = 'smarthomedb'
ORDER BY 1;
只需要对测试环境和开发环境分别使用该SQL查询,然后再使用navcat将数据导出为excel,就可以用来进行比较啦
比较的时候可以使用excel自带的VLOOKUP
函数,来过滤出不同的字段差异
注意: 这里的sheet1和sheet2的数据即为我们需要进行比较的数据
=VLOOKUP(A2, Sheet1!A:A, 1, 0)
参数介绍:
-
第一个参数
A2
是我们的查找值,表示我们的目的是找 “app_api_user” -
第二个参数
Sheet1!A:A
是查找的区域Sheet1中的数据 -
第三个参数 1 表示我们查找到以后要在取
Sheet1!A:A
中的第1列 -
第四个参数指定在查找时是要求精确匹配,还是大致匹配,如果为 FALSE(或者是0),大致匹配。如果为 TRUE 或者忽略,精确匹配
鼠标移动至上图红色箭头所示的位置,鼠标会显示为"+"符号,按住不动,向下拖拽,即可实现批量数据匹配
不匹配的数据会显示为如下所示
注意: 匹配的时候最好分别切换到Sheet1,让Sheet1和Sheet2比较一次,然后切换到Sheet2,让Sheet2和Sheet1再比较一次,这样得到的结果才是最准确的
转自作者的博客http://yujky.cn/#/article/details/1595286955409604610