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

StackOverflow https://stackoverflow.com/questions/1804575

  •  05-07-2019
  •  | 
  •  

Вопрос

У меня есть миграция 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, так что вам не нужно вручную конвертировать его.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top