如何根据特定数据集创建部分数据库转储?

时间:2013-07-04 15:30:52

标签: java database oracle language-agnostic export

我想基于数据库中的一些数据从数据库中转储一些数据。假设我有一个客户表和一个订单表。订单有一个外键给客户。订单是由许多订单(自己的表)构建的,而这些订单又具有项目(自己的表)。每个都通过FK链接。

为了从这个DB中提取测试数据,我希望以一种我可以处理它的方式获取数据,例如5个订单。数据应该包含我在我的应用程序中使用这些订单所需的一切(例如客户,物品,订单行)。我只想根据我想要的订单指定一些条件。

如果确实重要,那么环境就是:

  • JBoss上的JavaEE5
  • Hibernate
  • Oracle 11g

我不反对使用任何语言或工具让我以简单的方式获取这些数据。

更新:我发现以下question处理类似问题。

1 个答案:

答案 0 :(得分:1)

这是一个很好的问题。

Oracle在12c中发布了一个test management pack,我认为它可以解决这个问题 - 我没有这么多,但也许它与11g兼容。 Informatica有一个类似的产品。

如果您不想使用昂贵的解决方案,则可以使用COPY命令。 sqlplus COPY命令的主体类似于旧的exp / imp,但它允许您使用查询导出。

1.导出查找表。

2.使用过滤器导出主(事实)表。

copy from=user/pass@prod to user/pass@test create big_fact using select * from big_Fact where update_date > '01/01/2013'

3.通过加入基表来复制相关表

copy from=user/pass@prod to user/pass@test create related_table1 using select related_table1.* from related_table1 join big_fact on (join_condition) where big_fact.update_date > '01/01/2013'

等等......

这不是一个强大的解决方案,它与具有极少核心表和简单约束的模式兼容。