Liquibase Migration을 내 성배 건물에 통합하는 방법은 무엇입니까?
문제
여러 CSV 파일에서 종자 데이터를 데이터베이스에로드하기 위해 수동으로 실행하는 Liquibase 마이그레이션이 있습니다. 실행할 때 마다이 마이그레이션을 실행하고 싶습니다. grails run-app
.
두 가지 질문이 있다고 생각합니다.
- 내가 통합하는 방법
migrate
내 명령grails run-app
? - 어떻게 지우나요
DATABASECHANGELOG
동일한 마이그레이션을 반복해서 실행할 수 있도록?
아니면 CSV 파일의 DB에 많은 데이터를로드하는 더 좋은 방법이 있습니까?
해결책
질문 1- 마이그레이션 명령을 Run-App에 통합하려면 Run-App 스크립트에 발생한 이벤트를 들어야합니다. 이것은 설명됩니다 여기, 더 완전한 기사는입니다 여기.
질문 2- 데이터베이스를 지우려면 아마도 DB를 지우는 마이그레이션을 작성할 수 있습니까? 내가하는 방식은 내가 쓴 작은 스크립트를 사용하는 것입니다. 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)
다른 팁
질문 #2 : 매번 실행하려는 특정 변경 사항이있는 경우 변경 사항 태그를 설정할 수있는 "AlwaysRun"속성이 있습니다.
내 돈을 위해 Liquibase Gant 대본을 읽고 그들이하는 일을 복제하는 것이 더 쉽습니다. 그들은 간단하고 무슨 일이 일어나고 있는지에 대한 통찰력이 더 많을 것입니다.
당신은 사용해야합니다 오토바스 플러그인. 응용 프로그램이 시작되면 마이그레이션이 실행됩니다.
XML ChangeLog에서 Groovy One으로 변환하는 스크립트가있어 수동으로 변환 할 필요가 없습니다.
제휴하지 않습니다 StackOverflow