Итак, у меня есть часть программного обеспечения с открытым исходным кодом, написанная на Java, и база данных использует Derby, и она написана с использованием hibernate.
Проблема в том, что когда вы переходите на сборку последней сборки, обновления не происходитили перенесите функцию, чтобы использовать ваши существующие данные из вашей текущей базы данных derby в новую.
Поэтому я пишу Java-инструмент, который будет перемещать данные из одной базы данных в другую.
Вот проблема: у меня нет проблем с экспортом данных, проблема возникает, когда дело доходит до импорта данных из-за всех внешних ключей.
С помощью переполнения стека я нашел этот бит кодачто дает мне часть данных, которые мне нужны, но не все, что я могу использовать.Мне нужно иметь возможность создавать список имен таблиц, ограничений, внешних ключей и ссылок, чтобы я мог добавить свой код для изменения внешних ключей таблицы, а затем импортировать свои данные, а затем добавить ограничения и внешние ключи и ссылки обратно вбаза данных.
SELECT
fc.constraintname,
ft.tablename,
fs.schemaname,
fg.descriptor,
pc.constraintname,
ps.schemaname
FROM
sys.sysconstraints fc
JOIN sys.sysforeignkeys f ON f.constraintid =fc.constraintid
JOIN sys.sysconglomerates fg ON fg.conglomerateid = f.conglomerateid
JOIN sys.systables ft ON ft.tableid = fg.tableid JOIN sys.sysschemas fs ON ft.schemaid = fs.schemaid
JOIN sys.sysconstraints pc ON pc.constraintid = f.keyconstraintid
JOIN sys.sysschemas ps ON pc.schemaid = ps.schemaid WHERE fc.type = 'F';
Единственное, что я могу использовать из этого, которое я могу проанализировать, - это ограничение и имя таблицы.
Мне все еще нужно получить внешний ключ и ссылку.Я не знаю достаточно о том, как устроена база данных derby, и у меня нет времени исследовать ее и делать все перекрестные ссылки, чтобы найти ее.
Так что, если кто-нибудь там может помочь мне в том, что янеобходимо изменить приведенный выше оператор sql для получения следующего в одной таблице:
Имя таблицы - Ограничение - Внешний ключ - Ссылки
Пример Конечный результат: Стоимость - это ограничение имени таблицы 1232133.ключ - Currency_ID, ссылки - Currency
. Таким образом, я могу перестроить все следующие строки, аналогичные приведенным ниже: изменить стоимость таблицы добавить ограничение 1232133 ссылки на внешний ключ (Currency_ID) Валюта
Спасибо, Шон Маллиган