Pergunta

Eu tenho uma migração Liquibase que eu executar manualmente os dados de sementes de carga a partir de vários arquivos CSV no meu banco de dados. Eu gostaria de executar essa migração cada vez que eu corro grails run-app.

Eu acho que eu tenho duas perguntas em uma:

  1. Como eu integrar o migrate comando no meu grails run-app?
  2. Como faço para limpar o DATABASECHANGELOG para permitir-me para executar a mesma migração mais e mais?

Ou, se existe uma maneira melhor para carregar uma grande quantidade de dados em um DB a partir de arquivos CSV?

Foi útil?

Solução

Pergunta 1 - Para integrar o comando migrar para run-app, você deve escutar eventos jogados em scripts run-app. Isto é explicado aqui , e uma artigo mais completo é aqui .

Pergunta 2 - Para limpar o banco de dados, talvez você pode escrever uma migração que apura o db para você? A forma como eu fazer isso é usar um pequeno script que eu escrevi que só cai e cria um db. É 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)

Outras dicas

Pergunta # 2:. Se você tem changesets particulares que deseja executar todas as vezes, há um atributo "AlwaysRun" você pode definir sobre a tag de alterações

Para o meu dinheiro, é mais fácil de ler os scripts Liquibase Gant e replicar o que eles fazem. Eles são simples e você terá mais conhecimento sobre o que está acontecendo.

Você deve usar a autobase plug-in . Ele será executado suas migrações quando o aplicativo é iniciado.

Ele tem um script para converter a partir de um changelog XML para um Groovy como um bem para que você não tem que convertê-lo manualmente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top