Как получить имя таблицы, ограничения, внешний ключ и ссылки из базы данных Derby с Java? - PullRequest
0 голосов
/ 07 декабря 2018

Итак, у меня есть часть программного обеспечения с открытым исходным кодом, написанная на 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) Валюта

Спасибо, Шон Маллиган

...