Заполните базу данных с помощью пружины / гибернации / flyway / postgresql - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь заполнить свою базу данных примерно 150 различными значениями (по одному для каждой строки). До сих пор я нашел два разных способа реализации вставок, но ни один из них, кажется, не лучший способ сделать это.

  • Flyway + Postgres: Одним из них является создание файла миграции и использование команды COPY из postgres, но для этого мне нужно дать пользователю права суперпользователя, а это не является хорошим выбором. .

  • Пружинная загрузка: поместите файл data.sql в путь к классам с большим количеством вставок. Если я не ошибаюсь, мне нужно написать 150 insert into... операторов.

В предыдущих проектах я использовал liquibase, и у него была команда loadData, которая очень удобна для делать то, что говорит, что делает. Вы просто даете файл, имя таблицы и все. В итоге вы получите значения csv-файла в строках таблицы.

Есть ли аналогичный способ сделать это на пролетном пути? Каков наилучший способ заполнить базу данных?

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

Flyway является прямым конкурентом жидкой базы, поэтому, если вам нужно отслеживать состояние миграций, управлять распределенной миграцией (многие экземпляры одной и той же службы запускаются одновременно, и только один экземпляр должен фактически выполнять миграцию), проверьте при запуске, что миграция должна применяться и выполнять только соответствующие миграции, а также все другие преимущества, которые вы ранее ожидали от «системы управления миграцией», тогда вам следует использовать Flyway вместо непосредственного управления SQL.

Spring boot имеет интеграции с обоими Flyway и Liquidbase, так что вы можете поместить свои миграции в папку «ресурсы», определить пару свойств и весенняя загрузка автоматически запустит Flyway.

Например, здесь вы можете найти учебник интеграции Flyway с пружинной загрузкой.

Поскольку миграция flyway - это SQL файлы - вы можете размещать там все, что захотите (даже pl SQL, я полагаю), он даже будет управлять транзакциями для каждой миграции, гарантируя, что «атомарность» миграции (все или ничего, частичная миграция отсутствует).

Таким образом, простой подход заключается в создании файла SQL с 150 вставками и запуске его через пролетный переход весной или даже через maven в зависимости от вашего фактическая настройка.

Если вам требуется более детальное управление, а SQL недостаточно гибок, можно выполнить миграцию в Java коде. См. Официальная документация по пролетным путям

0 голосов
/ 30 марта 2020

На самом деле есть способ, вы можете найти больше информации на официальной документации страница

Вам также нужно добавить некоторые свойства весенней загрузки:

spring.flyway.enabled=true
spring.flyway.locations=classpath:/db/migration
spring.flyway.schemas=public

Свойства здесь

В моем случае, используйте R сценарии epetables для моих нужд, но позаботьтесь с префиксами enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...