如何将Liquibase迁移整合到我的grails构建中?

时间:2009-11-26 16:17:09

标签: grails liquibase

我有一个Liquibase迁移,我手动运行以将几个CSV文件中的种子数据加载到我的数据库中。我希望每次运行grails run-app时都运行此迁移。

我想我有两个问题:

  1. 如何整合migrate 命令进入我的grails run-app
  2. 如何清除DATABASECHANGELOG 允许我运行相同的 一遍又一遍地迁移?
  3. 或者,是否有更好的方法可以将大量数据从CSV文件加载到数据库中?

4 个答案:

答案 0 :(得分:3)

问题1 - 要将migrate命令集成到run-app中,您应该监听run-app脚本中抛出的事件。这解释为here,更完整的文章为here

问题2 - 为了清除数据库,也许您可​​以编写一个为您清除数据库的迁移?我这样做的方法是使用我编写的一个小脚本,只需删除并创建一个db。它适用于MySQL:

target(dropdb: "The description of the script goes here!") {
   def x = 'mysql -u root --password=XXXX -e "drop database yourdb; create database yourdb default character set utf8; " '.execute(); 
   x.waitFor()
    println "Exit Value ${x.exitValue()}"
}

setDefaultTarget(dropdb)

答案 1 :(得分:1)

您应该使用autobase plugin。它将在应用程序启动时运行您的迁移。

它有一个脚本可以从xml更改日志转换为groovy更改日志,因此您无需手动转换它。

答案 2 :(得分:1)

问题2:如果您想要每次都运行特定的更改集,则可以在changeSet标记上设置“alwaysRun”属性。

答案 3 :(得分:1)

为了我的钱,更容易阅读Liquibase Gant脚本并复制他们所做的事情。它们很简单,您可以更深入地了解正在发生的事情。