使用 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 来实现。

  1. 创建一个 changelog.xml 文件,将 .sql 文件列为单独的变更集。将此文件视为 'tempChangeLog.xml' 在该文件中,使用 "v1" 或 "v2".
  2. 向每个变更集添加标签属性
  3. 使用 liquibase update 将第一个标签应用于第一个数据库实例。
  4. 使用 liquibase generateChangelog 到 "convert" sql 到 liquibase xml 变更集。这将是您的 'realChangeLog.xml'
  5. 修改 'realChangeLog.xml 以将 "v1" 标签属性添加到所有变更集。
  6. 使用 liquibase update 和 'tempChangeLog.xml' 将第二个标签应用于第二个数据库实例。
  7. 使用 liquibase diffChangelog 命令比较数据库实例 1 和数据库实例 2,将更改附加到 'realChangeLog.xml'
  8. 再次修改 'realChangeLog.xml' 以将 "v2" 标签添加到所有新的变更集。

您现在将拥有一个 changelog.xml,可用于将数据库更新到 v1 或 v2。

将新更改与 ORM 同步是一个单独的练习。