2013-07-04 51 views
1

我想仅基于位于数据库中的一些数据从数据库中转储一些数据。假设我有一张客户表和一张订单表。订单对客户有一个外键。订单是由许多订单行(自己的表)构成的,而订单行又有项目(自己的表)。每个都通过FK链接。如何基于特定的一组数据创建部分数据库转储?

为了从这个数据库中提取测试数据,我想以一种可以处理它的方式获取数据,例如5个命令。数据应包含我在应用程序中使用这些订单所需的所有内容(例如客户,项目和订单)。我只想根据我想要的订单指定一些条件。

如果的确很重要,环境是:

  • JavaEE5上的JBoss
  • 休眠
  • 的Oracle 11g

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

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

回答

1

这是一个很好的问题。

Oracle在12c中发布了一个test management pack,我认为这样做 - 我没有深入了解它,但也许它与11g兼容。 Informatica有一个类似的产品。

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

1.导出查询表。

2.导出带有过滤器的主(事实)表。

copy from=user/[email protected] to user/[email protected] create big_fact using select * from big_Fact where update_date > '01/01/2013' 

3.复印有关通过加入到基表

copy from=user/[email protected] to user/[email protected] create related_table1 using select related_table1.* from related_table1 join big_fact on (join_condition) where big_fact.update_date > '01/01/2013' 

等等桌...

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

相关问题