Question1: Можно ли сгенерировать * .SQL вставить файлы/скрипты из полной базы данных h2?
Я только что протестировал с одной из моих файловых баз данных H2, и в результате экспорт экспортирует как структуру, так и данные.
Я протестировал версию 1.4.193
H2.
оба способа экспортирующей работы:
SCRIPT
команды из консоли H2
org.h2.tools.Script
инструмент из командной строки.
1) Я проверил сначала инструмент org.h2.tools.Script
, как я его уже использовал.
Вот минимальная команда структуры экспорта и данных:
java -cp <whereFoundYourH2Jar> org.h2.tools.Script -url <url>
-user <user> -password <password>
Где:
<whereFoundYourH2Jar>
это путь к классам, где у вас есть h2.jar LIB (я использовал это тот, который my m2 repo).
<url>
это адрес вашей базы данных
<user>
является пользователь базы данных
<password>
пароль базы данных
У вас есть больше деталей в официальной помощи org.h2.tools.Script
инструмента:
Creates a SQL script file by extracting the schema and data of a database.
Usage: java org.h2.tools.Script <options>
Options are case sensitive. Supported options are:
[-help] or [-?] Print the list of options
[-url "<url>"] The database URL (jdbc:...)
[-user <user>] The user name (default: sa)
[-password <pwd>] The password
[-script <file>] The target script file name (default: backup.sql)
[-options ...] A list of options (only for embedded H2, see SCRIPT)
[-quiet] Do not print progress information
See also http://h2database.com/javadoc/org/h2/tools/Script.html
2) Я проверил команду SCRIPT
с консоли H2. Он также работает.
Выполнение команды SCRIPT
может привести к ошибке.
Посмотрите на официальной документации:
Если нет «FileName» п задан, сценарий возвращается в виде набора результата. Эта команда может использоваться для создания резервной копии базы данных . Для длительного хранения он более переносимый, чем копирование файлов базы данных .
Если задано предложение «TO fileName», тогда весь сценарий (включая вставные операторы) записывается в этот файл, и возвращается результат без операторов вставки.
Вы использовали команду SCRIPT TO 'fileName'
. В этом случае весь скрипт (включая вставные операторы) записывается в этот файл и, как результат, в консоли H2, у вас есть все, кроме операторов вставки.
Например, введите команду SCRIPT TO 'D:\yourBackup.sql'
(или дружественный Unix-каталог, если вы ее используете), затем откройте файл, вы увидите, что в нем присутствуют SQL.
Как указано в документации, если вы хотите получить инструкции структуры и вставки в выходном результате консоли H2, не указывайте аргумент TO
. Просто введите: SCRIPT
.
Вопрос2: Есть * .sql вставка файлов единственный способ вставить начальный набора данных в h2 дб для интеграции тестов?
Как долго обсуждалось :) вы можете использовать DBunit dataset (решение среди других).
@Berger исправьте меня, если я ошибаюсь, но эта ссылка касается конфигурации Spring со встроенным h2. Они используют сценарий 'db/sql/insert-data.sql' для инициализации данных. Мой вопрос заключается в том, как автоматически создавать сценарий 'db/sql/insert-data.sql' из существующей базы данных –
Если вы используете DBUnit, вы можете добавить набор данных, который вы можете создать из своих собственных запросов. Я обсуждаю об этом в этом сообщении: http://stackoverflow.com/questions/40884098/hibernate-is-it-possible-to-save-cascade-only-on-test/40884456#40884456 – davidxxx
@davidxxx Я могу ввести начальное данные без DBUnit с простым sql. Проблема в том, что набор данных довольно большой, и я потрачу по крайней мере несколько дней, чтобы описать набор данных init. –