Только содержимое таблиц дампа H2 - PullRequest
0 голосов
/ 10 октября 2019

Я пытаюсь сделать резервную копию содержимого таблиц базы данных H2.

Я запускаю: SCRIPT TO '/opt/data/2019-10-10_tr.sql' TABLE EVENEMENT, PASSAGE, COURSE, LIGNE, но сгенерированный файл содержит некоторую информацию, такую ​​как:

SET DB_CLOSE_DELAY -1;         
;              
CREATE USER IF NOT EXISTS SA SALT '7ab09337026fac20' HASH    'c...fa387' ADMIN;            
CREATE SEQUENCE PUBLIC.HIBERNATE_SEQUENCE START WITH 5664;     
CREATE MEMORY TABLE PUBLIC.COURSE(
...

Что я не хочу (поэтому я хотел сбросить только таблицы). Я не хочу их, потому что когда я запускаю RUNSCRIPT FROM '/opt/data/2019-10-10_tr.sql', у меня есть исключение:

CREATE SEQUENCE PUBLIC.HIBERNATE_SEQUENCE START WITH 5664 [90035-197]: org.h2.jdbc.JdbcSQLException: Sequence "HIBERNATE_SEQUENCE" already exists; SQL statement:
CREATE SEQUENCE PUBLIC.HIBERNATE_SEQUENCE START WITH 5664 [90035-197]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)

И у меня есть это исключение, потому что база данных инициализируется ddl: <property name="hibernate.hbm2ddl.auto" value="create-drop" /> Я не хочу менятьэто ;в основном, сохраняя только содержимое базы данных и восстанавливая его в существующей базе данных: это должно работать, не так ли? Так что вопрос в том, что не так с моим синтаксисом SCRIPT, хотя он не сохраняет только содержимое таблиц?

1 Ответ

1 голос
/ 10 октября 2019
Команда

SCRIPT не предназначена для экспорта только данных, она предназначена для экспорта схемы с данными или без них. В настоящее время для этой цели нет встроенной команды.

Вы можете попытаться добавить к этой команде предложение «DROP», чтобы сгенерировать команды для удаления существующих таблиц, но у вас все еще могут быть проблемы с последовательностями и вашимитаблицы будут переопределены, поэтому все изменения в автоматически сгенерированной схеме будут потеряны.

Вы можете отфильтровать все не-INSERT команды из скрипта с вашим собственным кодом.

Вы можете экспортироватьзавершите скрипт и выполните DROP ALL OBJECTS до RUNSCRIPT и перезапишите все с ним.

...