2

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

我想我有两个问题:

  1. 如何将migrate 命令集成到我的grails run-app?
  2. 如何清除DATABASECHANGELOG 以允许我一遍又一遍地运行相同的迁移?

或者,有没有更好的方法将大量数据从 CSV 文件加载到数据库中?

4

4 回答 4

3

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

问题2 - 为了清除数据库,也许您可​​以编写一个为您清除数据库的迁移?我这样做的方法是使用我编写的一个小脚本,它只是删除并创建一个数据库。它适用于 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)
于 2009-11-26T16:32:52.367 回答
1

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

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

于 2009-11-26T21:32:56.210 回答
1

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

于 2009-11-27T05:59:12.237 回答
1

为了我的钱,阅读 Liquibase Gant 脚本并复制它们的功能更容易。它们很简单,您将对正在发生的事情有更多的了解。

于 2009-11-28T00:25:13.850 回答