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

我想我有两个问题合而为一:

  1. 我如何整合 migrate命令进入我的 grails run-app ?
  2. 我该如何清除 DATABASECHANGELOG让我一遍又一遍地进行相同的迁移?

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

有帮助吗?

解决方案

问题 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)

其他提示

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top