从flyway迁移中调用外部sql

时间:2014-05-12 17:34:11

标签: flyway

我有一个数据库,其中包含经常需要修改的视图和存储过程。我希望能够将这些视图存储在另一个目录中,并在编写迁移时包含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脚本?

1 个答案:

答案 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>

文档还有一个例子:https://flywaydb.org/documentation/ant/migrate