Как интегрировать миграцию Liquibase в мою сборку Grails?
Вопрос
У меня есть миграция Liquibase, которую я запускаю вручную, чтобы загрузить начальные данные из нескольких файлов CSV в мою базу данных. Я хотел бы запускать эту миграцию каждый раз, когда я запускаю grails run-app
. Р>
Я думаю, у меня есть два вопроса в одном:
<Ол> migrate
команда в моем Grails Run-App
? DATABASECHANGELOG
чтобы позволить мне бежать то же самое
миграция снова и снова? Или есть ли лучший способ загрузки большого количества данных в базу данных из файлов CSV?
Решение
Вопрос 1. Чтобы интегрировать команду migrate в run-app, вы должны прослушивать события, генерируемые в сценариях run-app. Это объясняется здесь , а также более полная статья здесь . р>
Вопрос 2 - Для очистки базы данных, возможно, вы можете написать миграцию, которая очищает базу данных для вас? Я делаю это с помощью небольшого написанного мной сценария, который просто отбрасывает и создает БД. Это для 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 " атрибут, который вы можете установить в теге changeSet.
За мои деньги легче читать сценарии Liquibase Gant и копировать то, что они делают. Они просты, и у вас будет больше понимания того, что происходит. Р>
Вам следует использовать плагин для автоматической базы . Он запустит ваши миграции при запуске приложения.
Он также имеет скрипт для преобразования из xml changelog в groovy, так что вам не нужно вручную конвертировать его.