質問

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

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

  1. migrate を統合する方法 grails run-app にコマンドを入力しますか?
  2. DATABASECHANGELOG をクリアするにはどうすればよいですか 私が同じを実行できるようにする 何度も移行しますか?

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

役に立ちましたか?

解決

質問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:毎回実行したい特定のchangeSetがある場合、「alwaysRun」があります; changeSetタグで設定できる属性。

私のお金のために、Liquibase Gantスクリプトを読み、それらの動作を複製する方が簡単です。それらはシンプルであり、何が起こっているかについてより多くの洞察を得ることができます。

autobaseプラグインを使用する必要があります。アプリケーションの起動時に移行が実行されます。

xmlの変更ログからgroovyのログに変換するスクリプトもあるため、手動で変換する必要はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top