Как интегрировать миграцию Liquibase в мою сборку Grails?

У меня есть миграция Liquibase, которую я запускаю вручную, чтобы загрузить исходные данные из нескольких файлов CSV в мою базу данных. Я хотел бы запускать эту миграцию каждый раз, когда я запускаю grails run-app.

Я думаю, что у меня есть два вопроса в одном:

  1. Как интегрировать команду migrate в мой grails run-app?
  2. Как очистить DATABASECHANGELOG, чтобы позволить мне выполнять одну и ту же миграцию снова и снова?

Или есть лучший способ загрузить много данных в БД из файлов CSV?


person Mike Sickler    schedule 26.11.2009    source источник


Ответы (4)


Вопрос 1. Чтобы интегрировать команду migrate в приложение для запуска, вы должны прослушивать события, создаваемые в сценариях для запуска приложения. Это объясняется здесь, а более полная статья находится здесь.

Вопрос 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)
person Jean Barmash    schedule 26.11.2009

Вопрос № 2: Если у вас есть определенные наборы изменений, которые вы хотите запускать каждый раз, есть атрибут «alwaysRun», который вы можете установить в теге changeSet.

person Nathan Voxland    schedule 27.11.2009

За мои деньги проще читать сценарии Liquibase Gant и копировать то, что они делают. Они просты, и вы будете лучше понимать, что происходит.

person John Stoneham    schedule 28.11.2009

Вам следует использовать плагин autobase. Он будет запускать ваши миграции при запуске приложения.

У него также есть скрипт для преобразования журнала изменений xml в groovy, поэтому вам не нужно преобразовывать его вручную.

person leebutts    schedule 26.11.2009
comment
Полезно знать, что Autobase — это легкая оболочка Groovy вокруг Liquibase, которая предоставляет удобный DSL для наборов изменений, более гибкий, чем файл XML :-) - person Colin Harrington; 27.11.2009