使用 Flyway 加载参考数据表

Posted

技术标签:

【中文标题】使用 Flyway 加载参考数据表【英文标题】:Loading reference data tables using Flyway 【发布时间】:2015-12-01 23:17:57 【问题描述】:

我们的应用程序有许多包含参考数据的表格。我们一直在使用传统的 Flyway 方法,为每次数据更改创建 delta 文件,但由于频繁更改,这种方式有点难以管理。使用带有截断后跟插入的脚本从头开始重新加载表会更容易,当数据更改时,开发人员会根据需要编辑此文件。

有没有一种干净的方法可以在 Flyway 中完成此操作而不会产生校验和错误?希望不要在每次需要更改时都创建新版本的加载脚本。

【问题讨论】:

【参考方案1】:

您是否尝试将参考数据添加为 beforeMigrate callback script?

“使用默认设置,Flyway 在其默认位置 (/sql) 中查找命令行工具的 SQL 文件,例如 beforeMigrate.sql、beforeEachMigrate.sql、afterEachMigrate.sql”

【讨论】:

这离解决方案越来越近了。回调在每次迁移后无条件运行。理想情况下,该脚本仅在其校验和更改时执行。如果解决方案支持多个脚本文件也很好 - 回调仅限于一个脚本文件。 有趣的校验和想法。我不确定它是否适用于所有情况,因为可能有一些有效的用例用于设置目标数据库或服务器配置,因为更改可能发生在 Flyway 之外。如果您不想每次都重建参考数据,我建议您将参考数据 INSERT 包装在 IF 语句中。这对你有用吗?你的后端数据库是什么? 目前有两个目标数据库。开发人员测试使用 H2,正式的 DEV/UAT/PROD 使用 Oracle 11g。运行时“if”条件可能很有用。这会依赖于底层数据库的功能还是 Flyway 有一些支持?

以上是关于使用 Flyway 加载参考数据表的主要内容,如果未能解决你的问题,请参考以下文章

flyway迁移后运行data.sql文件

如何使用 Flyway 从 DB Schema 导出或导入数据

使用 Flyway 迁移创建用户

使用 Flyway 更改文件名迁移

程序开发数据库版本控制必备 - Flyway

flyway迁移后弹簧数据不计算SERIAL列的行数