Como integrar uma migração Liquibase em minha grails construção?
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:
- Como eu integrar o
migrate
comando no meugrails run-app
? - 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?
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.