使用 Liquibase 创建数据库升级差异
Create database upgrade diff with Liquibase
我有两个数据库模式文件,它们都是空的。假设在 db.v1.sql 和 db.v2.sql.
中有数据库模式的版本 1 和版本 2
我想创建一个 diff,它将使用模式 db.v1.sql 更新数据库到 db.v2.sql.
Liquibase 有这个能力吗?
Java 是否有其他工具可以做到这一点?
是的,这可以使用 Liquibase 来实现。
- 创建一个 changelog.xml 文件,将 .sql 文件列为单独的变更集。将此文件视为 'tempChangeLog.xml' 在该文件中,使用 "v1" 或 "v2".
向每个变更集添加标签属性
- 使用
liquibase update
将第一个标签应用于第一个数据库实例。
- 使用
liquibase generateChangelog
到 "convert" sql 到 liquibase xml 变更集。这将是您的 'realChangeLog.xml'
- 修改 'realChangeLog.xml 以将 "v1" 标签属性添加到所有变更集。
- 使用
liquibase update
和 'tempChangeLog.xml' 将第二个标签应用于第二个数据库实例。
- 使用
liquibase diffChangelog
命令比较数据库实例 1 和数据库实例 2,将更改附加到 'realChangeLog.xml'
- 再次修改 'realChangeLog.xml' 以将 "v2" 标签添加到所有新的变更集。
您现在将拥有一个 changelog.xml,可用于将数据库更新到 v1 或 v2。
将新更改与 ORM 同步是一个单独的练习。
我有两个数据库模式文件,它们都是空的。假设在 db.v1.sql 和 db.v2.sql.
中有数据库模式的版本 1 和版本 2我想创建一个 diff,它将使用模式 db.v1.sql 更新数据库到 db.v2.sql.
Liquibase 有这个能力吗? Java 是否有其他工具可以做到这一点?
是的,这可以使用 Liquibase 来实现。
- 创建一个 changelog.xml 文件,将 .sql 文件列为单独的变更集。将此文件视为 'tempChangeLog.xml' 在该文件中,使用 "v1" 或 "v2". 向每个变更集添加标签属性
- 使用
liquibase update
将第一个标签应用于第一个数据库实例。 - 使用
liquibase generateChangelog
到 "convert" sql 到 liquibase xml 变更集。这将是您的 'realChangeLog.xml' - 修改 'realChangeLog.xml 以将 "v1" 标签属性添加到所有变更集。
- 使用
liquibase update
和 'tempChangeLog.xml' 将第二个标签应用于第二个数据库实例。 - 使用
liquibase diffChangelog
命令比较数据库实例 1 和数据库实例 2,将更改附加到 'realChangeLog.xml' - 再次修改 'realChangeLog.xml' 以将 "v2" 标签添加到所有新的变更集。
您现在将拥有一个 changelog.xml,可用于将数据库更新到 v1 或 v2。
将新更改与 ORM 同步是一个单独的练习。