我正在使用IBM DB2 v9.1
并希望将所有数据库导出到xml文件,并在需要时将其导回。我的数据库中有9个表。
我正在使用java and hibernate
。到目前为止我所做的是:通过hibernate获取所有数据并填充POJO对象,然后将对象导出到xml文件。现在要导入我需要先删除所有现有数据库,然后将xml文件数据导入数据库。
问题在于主键(ids)。一旦从DB2中删除了id,就无法使用该id保存数据,并且将为其分配新的id。这扰乱了外键关系。什么是最好的解决方案?
答案 0 :(得分:0)
如果您想导出/导入数据用于测试目的,您可能需要考虑DbUnit http://www.dbunit.org/index.html
答案 1 :(得分:0)
您对所有数据库的意思是什么?所有数据?甚至是DDL?
我认为您正在导出所有数据,并且您创建的表格将使用导出的数据重新填充。
问题是约束和生成的值。有一篇关于生成值的好文章:http://www.ibm.com/developerworks/data/library/techarticle/0205pilaka/0205pilaka2.html
对于引用约束,最好是在导入之前删除/停用它们,然后导入数据,最后重新创建/激活引用约束。
这里是启用/禁用约束的良好存储过程:http://www.dzone.com/snippets/db2-enabledisable-constraints
答案 2 :(得分:0)
也许MERGE statement可以帮你解救。如果已存在具有匹配ID的行,则可以更新该行。如果没有匹配ID的行,则允许您插入它。
那么问题可能会变成,你真的需要在创建XML文件时从DB2中删除行吗?
答案 3 :(得分:0)
导入文件后,将映射所有关系以检查它们之间的关系。映射关系后将创建新对象,它们将使用新ID保存在数据库中,因为DB2不会将数据保存在旧的已删除ID上,而是将其保存为新ID。