2

複数の CSV ファイルからデータベースにシード データをロードするために手動で実行する Liquibase 移行があります。を実行するたびに、この移行を実行したいと思いますgrails run-app

私は1つに2つの質問があると思います:

  1. migrate コマンドをに統合するにはどうすればよいgrails run-appですか?
  2. DATABASECHANGELOG 同じ移行を何度も実行できるようにするにはどうすればよいですか?

または、CSV ファイルから DB に大量のデータをロードするより良い方法はありますか?

4

4 に答える 4

3

質問 1 - 移行コマンドを run-app に統合するには、run-app スクリプトでスローされたイベントをリッスンする必要があります。これについてはこちらで説明されており、より完全な記事はこちらにあります。

質問 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)
于 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 に答える