液体碱 http://www.liquibase.org/是一个数据库变更管理工具。它是用 Java 实现的,但可以使用命令行版本来控制数据库升级(.NET 版本正在开发中)。
如果您需要一些建模工具支持那么电源架构师 http://code.google.com/p/power-architect/可以与液体碱 http://www.liquibase.org/.
与管理数据库模式升级相关的问题很微妙。对于一些背景阅读,我建议:
- 进化数据库设计 http://martinfowler.com/articles/evodb.html
- 让您的数据库处于版本控制之下 http://www.codinghorror.com/blog/2008/02/get-your-database-under-version-control.html
Update
创建一个名为liquibase.properties保存数据库详细信息:
url=jdbc:sqlserver://localhost:1433;databaseName=test
username=myuser
password=mypass
driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
classpath=C:\\Program Files\\Microsoft SQL Server 2005 JDBC Driver\\sqljdbc_1.2\\enu\\sqljdbc.jar
changeLogFile=database-changelog.xml
当对现有数据库使用 liquibase 时,您可以运行以下命令:
liquibase generateChangeLog
liquibase changelogSync
第一个命令将创建一个名为的 XML 文件数据库变更日志.xml包含提取的数据模型。
第二个命令是可选的,但如果您想将新更改应用于当前数据库,则很有用。它将提取的变更集标记为已在数据库中执行。
现在您已经有了一个起点,您可以继续将新的变更集添加到数据库变更日志.xml文件。要应用这些新更改,只需运行以下命令:
liquibase update
这与您用于全新数据库的命令相同。在更新操作期间,liquibase 会将 XML 文件中的变更集与已应用于目标数据库的变更集进行比较。
对于更高级的用例,我建议阅读 liquibase 文档,以下答案也可能有所帮助:
- 使用 liquibase 比较数据库并生成 sql 脚本 https://stackoverflow.com/questions/8397488/comparing-databases-and-genrating-sql-script-using-liquibase/8408334#8408334