如何将 liquibase 迁移展平到架构初始化文件中?

How to flatten liquibase migrations into a schema init file?

在我们当前的项目中,我们使用 liquibase 来管理数据库迁移。 我们的迁移是 *.sql 个文件。我们目前在 master 中有 156 个这样的迁移。

我们的项目是spring启动应用程序,使用的数据库是PostgreSQL 9.6。

为了在启动新环境(用于测试和开发)时使 DB init 更快,我们希望将所有这些迁移合并为一个。在 liquibase 中有自动执行此操作的方法吗?或者我们必须将当前模式导出到文件中并手动重置更改日志?

您可以从现有数据库生成更新日志as described in the manual

将数据库初始化为所需状态后,您可以使用 generateChangeLog 作为参数再次 运行 Liquibase:

liquibase --changeLogFile=complete_migration.postgresql.sql
          --driver=org.postgresql.Driver 
          --classpath=postgresql-42.2.8.jar 
          --url=... 
          --username=... 
          --password=...   generateChangeLog

这将生成一个名为 complete_migration.postgresql.sql 的文件,代表数据库的当前状态。

请注意,我将命令格式化为多行,你如何运行多行命令取决于你使用的操作系统。

听起来,分析您当前的 DB 初始化进程并查看时间从何而来可能会有所帮助。我不认为将 156 个 sql 文件转换成单个 sql 文件会有多大帮助 - 仅读取不同文件的开销不太可能 'longest pole in the tent'。