我有一个数据库,其中包含经常需要修改的视图和存储过程。我希望能够将这些视图存储在另一个目录中,并在编写迁移时包含sql代码。基本上,dir结构将是
views/
my_view.sql
functions/
my_func.sql
sql/
V1__add_view.sql
V1_1add_view.sql就像是
\i views/my_view.sql
哪个目前在psql中有效,但在flyway迁移中不起作用。这样做的好处是,当我们想要进行更改时,我们可以修改视图,并将其包含在下一次迁移中。它还可以消除视图迁移中的大量复制粘贴。
有没有办法在flyway迁移中包含外部SQL脚本?
答案 0 :(得分:1)
听起来您可以使用Repeatable migrations完成此操作。
我不认为flyway支持调用外部脚本,就像\ i声明一样。如果要尝试导入路径,可以使用占位符作为脚本。
使用您的示例,在sql迁移文件中使用占位符
${my_view}
当您调用flyway时,使用views / my_view.sql中的文本定义占位符替换值。我不确定你用什么来打电话给flyway,但是在蚂蚁中它就像是
<loadfile property="flyway.placeholder" srcfile="views\my_view.sql"/>
<flyway:migrate>
<locations>
<location path="database/migrations"/>
</locations>
<placeholders>
<placeholder name="my_view" value="${flyway.placeholder}"/>
</placeholders>
</flyway:migrate>