所以我有一个用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)