1

我正在使用IBM DB2 v9.1并希望将所有数据库导出到 xml 文件,并在需要时将其导入回来。我的数据库中有 9 个表。

我正在使用java and hibernate. 到目前为止我所做的是:通过hibernate获取所有数据并填充POJO对象,然后将对象导出到xml文件。现在要导入,我需要先删除所有现有数据库,然后将 xml 文件数据导入数据库。

问题在于主键(ID)。一旦从 DB2 中删除 id,则无法使用该 id 保存数据,它将被分配新的 id。这会扰乱外键关系。什么是最好的解决方案?

4

4 回答 4

0

导入文件后,所有关系都将被映射以检查它们的相互关系。映射关系后将创建新对象,它们将使用新 ID 保存在数据库中,因为 DB2 不会将数据保存在已删除的旧 ID 上,而是将其保存到新 ID。

于 2013-04-22T06:19:41.883 回答
0

也许MERGE 语句可以帮助您。如果已经存在具有匹配 id 的行,它将让您更新该行。如果没有匹配 ID 的行,那么它将允许您插入它。

那么问题可能变成了,当您创建 XML 文件时,您真的需要从 DB2 中删除行吗?

于 2013-04-16T22:01:05.613 回答
0

你说的所有数据库是什么意思?所有数据?甚至是 DDL?

我认为您正在导出所有数据,并且您将创建的表留下以重新填充导出的数据。

问题是约束和生成的值。有一篇关于生成值的好文章:http: //www.ibm.com/developerworks/data/library/techarticle/0205pilaka/0205pilaka2.html

对于引用约束,最好在导入之前删除/停用它们,然后导入数据,最后重新创建/激活引用约束。

在这里,一个很好的启用/禁用约束的存储过程:http ://www.dzone.com/snippets/db2-enabledisable-constraints

于 2013-04-16T08:57:56.860 回答
0

如果您想出于测试目的导出/导入数据,您可能需要考虑 DbUnit http://www.dbunit.org/index.html

于 2013-04-16T08:35:20.263 回答