2011-09-08 77 views
0

我需要能够比较两个相似的数据库。一个会比另一个稍微更新,并且对数据库结构以及可能的内容进行更改。比较数据库差异并获取SQL输出

到目前为止,我已经尝试使用liquibase,但它似乎没有正确比较。 我也尝试了MySQL Diff Perl模块,但不考虑内容。

主要问题:

有谁知道的任何解决方案,这将使回SQL的结构和内容的差异,并生成SQL脚本?更

有点信息:

这样做的用途是进行更新和安装器官功能障碍综合征的phpBB,这样的论坛可以与我们网站的其他部分一起被包括在构建过程中时。其中有一个4层过程(本地,开发,分期,生产)。

当安装phpBB更新和MOD时,我将转储当前生产数据库并锁定站点,以便在进行更改时不会添加新数据。这样数据库不应该不同步。

当安装的MOD和更新有时数据库结构的变化,也表中的数据,尤其是增加的东西需要额外的权限等

所以我用将用于本地数据库与升级的比较解决方案时,更改生产数据库,为我提供一个脚本,我可以在构建过程的每个层上运行脚本,而不是手动在每个层上安装update/MOD。

+0

Enterprise Elements Repository具有此功能,但该工具不是免费的。 – Randy

+0

一个数据库是否包含来自其他数据库的所有数据?如果是这样,是否有一个标识符可用于比较类似的记录,如不可变的主键? –

+0

红色的门有SQL比较和SQL数据比较,但不幸的是不是免费的。 –

回答

0

我已经使用工具>结构同步选项实际上找到了通过Navicat for MySQL来完成它的方法。

这将给出两个数据库之间结构差异的SQL语句。

然后做数据差异你可以使用数据同步。

我已经设法将结构差异的SQL脚本复制出来。然而,数据同步似乎更像是一个内部的Navicat事物。我确信有一种方法可以提取查询。

请注意我正在使用许可证版本,所以不知道它是否可用免费使用。

0

您可以使用数据库同步工具SQLyog同步两个数据库,无论是单向还是双向。迄今为止,这是MySQL GUI的最佳数据比较工具。并且,Schema同步用于两个数据库之间的模式比较。

这两个工具都可以生成SQL脚本。

+0

好的...我会试一试。 – diggersworld