为两个SQL转储区分更新/更改语句的区别?

时间:2012-06-12 13:07:46

标签: sql database

是否有专注于两个数据库导出的库,查找差异并为其创建更新/更改语句?基本上是从导出A到导出B的更新脚本。

例如:

-- Version 1
CREATE TABLE IF NOT EXISTS `mytable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- Version 2
CREATE TABLE IF NOT EXISTS `mytable` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `description` text,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- Would result in this:
ALTER TABLE `mytable`
  ADD `description` text;

编辑:这个问题与MySQL的 libraries 有关,而非工具。

3 个答案:

答案 0 :(得分:1)

有一些 MySQL 比较工具。

答案 1 :(得分:0)

RedGate http://www.red-gate.com/products/sql-development/sql-compare/index-b为此提供了一个非常好的稳定解决方案。

我相信Visual Studio 2010的终极版也可以比较模式但是我不确定它是否会为你生成ALTER脚本。

修改 我只记得这个http://opendbiff.codeplex.com/,但是当我上次看到它时,我没有太多运气。

答案 2 :(得分:0)

此节点模块可能很有用。它区分实时数据库,但是从SQL转储创建实时数据库应该很简单。

https://github.com/contra/dbdiff