Question

J'ai une migration Liquibase que je lance manuellement pour charger les données de départ de plusieurs fichiers CSV dans ma base de données. J'aimerais exécuter cette migration chaque fois que j'exécute grails run-app .

Je pense avoir deux questions en une:

  1. Comment intégrer le migrer commande dans mon grails run-app ?
  2. Comment effacer le DATABASECHANGELOG pour me permettre de courir le même la migration à plusieurs reprises?

Ou existe-t-il un meilleur moyen de charger beaucoup de données dans une base de données à partir de fichiers CSV?

Était-ce utile?

La solution

Question 1 - Pour intégrer la commande migrate à run-app, vous devez écouter les événements générés dans les scripts run-app. Ceci est expliqué ici , et un l'article plus complet est ici .

Question 2 - Pour effacer la base de données, vous pouvez peut-être écrire une migration qui efface la base de données pour vous? La façon dont je le fais est d'utiliser un petit script que j'ai écrit qui supprime et crée une base de données. C'est pour 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)

Autres conseils

Question n ° 2: Si vous souhaitez exécuter à chaque fois des groupes de modifications particuliers, il existe un script "alwaysRun". attribut que vous pouvez définir sur la balise changeSet.

Pour mon argent, il est plus facile de lire les scripts Liquibase Gant et de les reproduire. Ils sont simples et vous aurez une meilleure idée de ce qui se passe.

Vous devez utiliser le plug-in autobase . Il exécutera vos migrations au démarrage de l'application.

Il contient également un script permettant de convertir un changelog xml en un groovy afin que vous n'ayez pas à le convertir manuellement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top