迁移前和迁移后 - 调用外部脚本 - liquibase

时间:2017-02-20 02:20:14

标签: liquibase

是否有一种以分阶段的方式使用liquibase调用外部脚本的方法?

我正在寻找类似于flyway回调的东西来调用外部脚本,如sh:https://flywaydb.org/documentation/callbacks.html

示例:

1)迁移前:运行sh script 1

2)运行迁移

3)迁移后:运行sh script 2

4)如果迁移失败:运行sh script 3

基本上是一种调用外部脚本的分阶段机制,作为迁移步骤的一部分。

感谢您的反馈。

谢谢

托比

2 个答案:

答案 0 :(得分:0)

您可以使用http://www.liquibase.org/documentation/changes/execute_command.html

运行外部程序(包括sh脚本)

如果要在每次迁移运行之前和之后运行某些内容,则需要以这样的方式构建主更改日志:

    <changeSet id="preMigration" runAllways="true">
    ...pre migration
    </changeSet>

    ...all your migrations are here

    <changeSet id="postMigration" runAllways="true">
    ...post migration
    </changeSet>

而且我不确定是否存在错误处理程序。

答案 1 :(得分:0)

谢谢dbf

我能够使用liquibase运行bat文件并将参数传递给它:

<property name="my_param_name" value="myValue"/>

<changeSet author="tobi" id="preMigration" >
    <executeCommand executable="C:\projects\lbdemo\trunk\mybatfile.bat">
      <arg value="Constant: ${my_param_name}"/>
    </executeCommand>  
</changeSet>

C:\ projects \ lbdemo \ trunk \ mybatfile.bat:

@echo off
  if not exist "C:\Test\" mkdir C:\Test
  set arg1=%1
  (echo %arg1%) > C:\Test\EmptyFile.txt  

mybatfile.bat将创建一个EmptyFile.txt并将my_param_name值写入其中。