有一个数据库,但是他们时间都是不相同的,那么如何有效的比较两个数据库数据表的不同?
主要是比较两个数据库表的不同,还有就是表的数据记录数的不同。我用的方法就是在CMD里面列出两个数据库的表的列表SHOW TABLES,然后各自保存到txt文件,然后再用Notepad++来比较文件,但是这样只能看出两个数据库的表的不同,却不能看出各个表的记录数的不同。
如何才可以快速有效的比较两个数据库的表还有表的记录不同?

解决方案 »

  1.   

    use database_a;
    select * from table into outfile "compare_a.txt";
    use database_b;
    select * from table into outfile "compare_b.txt";
    然后比较这两个txt?
      

  2.   

    如果是myisam引擎  可以去information_schema.table来比较行数如果是innodb且用了innodb_file_per_table这个参数,那么可以直接去data目录去比较每个物理文件大小
    前提是表结构索引都一样,而且是大致比较 并不精准
      

  3.   

    楼主可否转换一下思路。
    直接利用集合运算(sql语句),看看所有的同名表是否含有相同的内容就可以了。应用不需要导出表的内容了
      

  4.   

    比较2个库的结构是否一致?简单的办法把2个库都备份出来,mysqldump ... -d >/home/a.txt   
    只备份结构,然后找一个文件比较的工具,比较这2个文件就可以了。很快,不同的地方会有明显的提示的。比较2个库的数据是否一致?在2个库里对每个表分别checksum,然后比较值是否一样。mysql> CHECKSUM TABLE lim1;
    +-----------+------------+
    | Table     | Checksum   |
    +-----------+------------+
    | test.lim1 | 3181119096 |
    +-----------+------------+
    1 row in set (0.00 sec)mysql> CHECKSUM TABLE lim;
    +----------+------------+
    | Table    | Checksum   |
    +----------+------------+
    | test.lim | 1197970544 |
    +----------+------------+
    1 row in set (0.29 sec)mysql> CHECKSUM TABLE lim;
    +----------+------------+
    | Table    | Checksum   |
    +----------+------------+
    | test.lim | 1197970544 |
    +----------+------------+
    1 row in set (0.33 sec)
    另外percona公司出品的MK套件里面,有工具做这样的比较的,你可以搜一下。