找出两个应该相同的MySQL表的区别

时间:2012-01-23 22:50:00

标签: mysql sql

我有两个MySQL数据库:一个用于测试,一个用于生产。它们位于不同的服务器上。这些表应该相同,但是一个表比另一个表多一行。我怎么能找到这一行?

5 个答案:

答案 0 :(得分:2)

你可以尝试:

  1. 在SQL文件中导出第二个服务器表(使用MySqlDump)
  2. 编辑文件更改表名称
  3. 将SQL文件导入第一台服务器
  4. 然后运行

    SELECT t1.* FROM table1 t1
    LEFT JOIN table2 t2
      ON t1.id = t2.id
    WHERE t2.id IS NULL
    

答案 1 :(得分:2)

pt-table-sync --print h=server1,D=dbname,t=tablename h=server2

请参阅http://www.percona.com/doc/percona-toolkit/2.0/pt-table-sync.html

答案 2 :(得分:2)

一种方法是将每个表导出到sql文件并使用diff程序查找差异。

漂亮差异(网络) - http://prettydiff.com/

WinMerge(胜利) - http://winmerge.org/

FileMerge(OS X) - http://en.wikipedia.org/wiki/Apple_Developer_Tools#FileMerge

答案 3 :(得分:0)

答案 4 :(得分:0)

我有时做过的一个技巧(你需要访问这两个表):

  1. Open Access或类似的
  2. 来自服务器A的链接表
  3. 来自服务器B的链接表
  4. 计算Access中的差异
  5. 显然,如果表格很大,你必须要小心。