如何将 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'。
在我们当前的项目中,我们使用 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'。