MySQL单库中Tables,columns对比表元数脚本

脚本:

以下案例中都是 新库test1, 旧库test 。

1.对比表范围差异:

select a.n_ts as "新库", a.n_tn as "新库表名", a.o_ts as "旧库", a.o_tn as "旧库表名" , case when a.n_tn is null then '新库缺表' when a.o_tn is null then '旧库缺表' else '表名一致' end as "比对结果" from ( select a.TABLE_SCHEMA as n_ts,a.TABLE_NAME as n_tn, b.table_schema as o_ts, b.table_name as o_tn from information_schema.TABLES a left join information_schema.TABLES b on b.TABLE_SCHEMA='test' and a.TABLE_NAME = b.table_name where a.TABLE_SCHEMA='test1' union all select a.TABLE_SCHEMA as n_ts,a.TABLE_NAME as n_tn, b.table_schema as o_ts, b.table_name as o_tn from information_schema.TABLES a right join information_schema.TABLES b on a.TABLE_NAME = b.table_name and a.TABLE_SCHEMA='test1' where b.TABLE_SCHEMA='test' and a.table_name is null ) a order by if(isnull(a.n_tn),1,0),if(isnull(a.o_tn),1,0),a.n_tn,a.o_tn;