Pregunta

Tengo una migración de Liquibase que ejecuto manualmente para cargar datos de inicio de varios archivos CSV en mi base de datos. Me gustaría ejecutar esta migración cada vez que ejecuto grails run-app .

Creo que tengo dos preguntas en una:

  1. Cómo integrar el migrate comando en mi grails run-app ?
  2. ¿Cómo borro el DATABASECHANGELOG que me permita correr lo mismo migración una y otra vez?

O, ¿hay una mejor manera de cargar una gran cantidad de datos en una base de datos desde archivos CSV?

¿Fue útil?

Solución

Pregunta 1: para integrar el comando migrate en la aplicación de ejecución, debe escuchar los eventos lanzados en los scripts de la aplicación de ejecución. Esto se explica aquí , y un El artículo más completo es aquí .

Pregunta 2: para borrar la base de datos, ¿quizás pueda escribir una migración que borre la base de datos por usted? La forma en que lo hago es usar un pequeño script que escribí, que solo cae y crea un db. Es para 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)

Otros consejos

Pregunta n. ° 2: si tiene cambios particulares que desea ejecutar cada vez, hay un " alwaysRun " atributo que puede establecer en la etiqueta changeSet.

Para mi dinero, es más fácil leer los scripts de Liquibase Gant y replicar lo que hacen. Son simples y tendrás más información sobre lo que está sucediendo.

Debería usar el complemento de autobase . Ejecutará sus migraciones cuando se inicie la aplicación.

También tiene un script para convertir de un registro de cambios xml a uno maravilloso para que no tengas que convertirlo manualmente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top