我有一个数据库,其中包含通常需要修改的视图和存储过程.我希望能够将这些视图存储在另一个目录中,并在编写迁移时包含sql代码.基本上,dir结构将是
views/
my_view.sql
functions/
my_func.sql
sql/
V1__add_view.sql
Run Code Online (Sandbox Code Playgroud)
和V1__add_view.sql会是这样的
\i views/my_view.sql
Run Code Online (Sandbox Code Playgroud)
哪个目前在psql中有效,但在flyway迁移中不起作用.这样做的好处是,当我们想要进行更改时,我们可以修改视图,并将其包含在下一次迁移中.它还可以消除视图迁移中的大量复制粘贴.
有没有办法在flyway迁移中包含外部SQL脚本?
听起来您也许可以使用可重复迁移来完成此任务。
我认为 Flyway 不支持像 \i 语句那样调用外部脚本。如果您想尝试导入路径,您可以在脚本中使用占位符。
使用您的示例,使用 sql 迁移文件中的占位符
${my_view}
Run Code Online (Sandbox Code Playgroud)
当您调用flyway时,使用views/my_view.sql中的文本定义占位符替换值。我不确定你用什么来称呼 Flyway,但在 ant 中它会是这样的
<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>
Run Code Online (Sandbox Code Playgroud)
该文档还有一个示例:https ://flywaydb.org/documentation/ant/migrate
| 归档时间: |
|
| 查看次数: |
1173 次 |
| 最近记录: |