Frage

Ich habe eine Migration Liquibase, die ich manuell Seed-Daten aus mehreren CSV-Dateien in meine Datenbank laden laufen. Ich mag diese Migration jedes Mal, wenn ich grails run-app laufen laufen.

Ich glaube, ich habe zwei Fragen in einem:

  1. Wie integriere ich die migrate Befehl in mein grails run-app?
  2. Wie lösche ich die DATABASECHANGELOG mir zu erlauben, das gleiche zu laufen Migration über und über?

Oder gibt es einen besseren Weg, um eine Menge von Daten in ein DB aus CSV-Dateien zu laden?

War es hilfreich?

Lösung

Frage 1 - zu migrieren Befehl in den Run-App zu integrieren, können Sie für Veranstaltungen im Run-App-Skripte geworfen hören sollte. Dies erklärt sich hier und ein vollständigeren Artikel ist hier .

Frage 2 - Zum Löschen der Datenbank, können Sie vielleicht eine Migration schreiben, die die DB für Sie löscht? So wie ich es tun, ist ein kleines Skript verwende ich schrieb, dass nur Tropfen und schafft eine db. Es ist für 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)

Andere Tipps

Frage 2: Wenn Sie bestimmte Change haben Sie jedes Mal ausgeführt werden soll, gibt es eine „alwaysRun“ Attribut, das Sie auf dem ChangeSet Tag einstellen

.

Für mein Geld, dann ist es einfacher, die Liquibase Gant Skripte zu lesen und replizieren, was sie tun. Sie sind einfach und Sie werden mehr Einblick in das, was passiert.

Sie sollten verwenden die Autobase-Plugin . Es wird Ihre Migrationen ausgeführt werden, wenn die Anwendung gestartet wird.

Es hat ein Skript aus einem XML-Changelog, das zu einem groovigen man auch konvertieren, so dass Sie müssen es nicht manuell konvertieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top