如何使用Java从derby数据库中获取表名,约束,外键和引用?

时间:2018-12-07 17:53:03

标签: java reference constraints derby

所以我有一个用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 引用是货币

因此,我可以重建以下类似的所有以下行: 更改表成本添加约束1232133外键(Currency_ID)引用货币

谢谢, 肖恩·穆里根(Shawn Mulligan)

0 个答案:

没有答案