Как интегрировать миграцию Liquibase в мою сборку Grails? - PullRequest
2 голосов
/ 26 ноября 2009

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

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

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

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

Ответы [ 4 ]

3 голосов
/ 26 ноября 2009

Вопрос 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)
1 голос
/ 28 ноября 2009

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

1 голос
/ 27 ноября 2009

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

1 голос
/ 27 ноября 2009

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

В нем также есть скрипт для преобразования из xml changelog в Groovy, поэтому вам не нужно вручную конвертировать его.

...