【问题标题】:How to compare two MySql database如何比较两个MySql数据库
【发布时间】:2016-05-09 07:15:06
【问题描述】:

我要比较两个 MySql 数据库数据,我想比较两个 MySql 架构并找出两个架构之间的区别。

我创建了两个变量 Old_Release_DB 和 New_Release_DB。在 Old_Release_DB 中,我存储了旧的发布模式,而不是经过一些修改,比如我删除了一些列,添加了一些列,重命名了一些列,更改了列属性,比如增加数据类型大小(例如:varchar(10) 到 varchar(50))。然后它变成了我存储在 New_Release_DB 中的新发布模式。

现在我想要表名,在 New_Release_DB 中已更改的列名列表,并随列名一起更改。

例子,

Table_A Column_Name 添加(如果已添加), Table_A Column_Name 删除(如果被删除), Table_A Column_Name 更改(如果其属性已更改)

我正在 Linux 的 Shell 脚本中尝试它,但我没有得到它。如果我可以使用其他脚本,如 python 或 java,请告诉我。

【问题讨论】:

  • 只需获取两个数据库的 mysqldump 并比较两个 .sql 文件。我认为这应该很容易解决您的问题。
  • SQLyog.. 可视化数据比较和schema syc可以做到。
  • mysqldump如何使用?
  • 您可以使用此tutorial 了解如何创建.sql 文件。创建后,只需比较这 2 个文件。

标签: javascript python mysql linux shell


【解决方案1】:

看看mysqldiff

它还可以生成必要的 SQL 语句以从一种方案转换为另一种方案(反之亦然)

来自上述链接的文档相当不错。上手很简单:

mysqldiff --server1=user@host1 --server2=user@host2 test:test

【讨论】:

    【解决方案2】:

    您可以通过创建数据库转储来比较两个数据库: mysqldump -u your-database-user your-database-name > database-dump-file.sql - 如果您使用密码连接到数据库,还要在 mysqldump 命令中添加 -p 选项。

    然后将它们与 diff 进行比较: diff new-database-dump-file.sql old-database-dump-file.sql 或者,您可以通过将 > databases_diff 添加到先前的命令,将 diff 执行的结果保存到具有 STDOUT 重定向的文件中。

    但是,这种比较需要一些眼力 - 你会得到两个文件之间的差异。

    【讨论】:

      【解决方案3】:

      我使用具有模式同步实用程序的 mysql Workbench。尝试将更改从开发服务器应用到生产服务器时非常方便。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-18
        • 1970-01-01
        • 2011-11-28
        • 2012-08-24
        • 1970-01-01
        • 2018-08-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多