提问人:boutta 提问时间:7/4/2013 最后编辑:Communityboutta 更新时间:7/5/2013 访问量:1043
如何基于一组特定的数据创建部分数据库转储?
How to create a partial database dump based on a specific set of data?
问:
我想仅根据数据库中的一些数据从数据库中转储一些数据。假设我有一个客户表和一个订单表。订单对客户有外来密钥。订单是由许多订单行(自己的表)构建的,而这些订单行又有项目(自己的表)。每个都通过FK链接。
为了从这个数据库中提取测试数据,我想以一种我可以处理它的方式获取数据,比如 5 个订单。数据应包含我在应用程序中使用这些订单所需的所有内容(例如客户、项目、订单行)。而且我只想根据我想要的订单指定一些条件。
如果确实重要,环境是:
- JBoss 上的 JavaEE5
- 冬眠
- 甲骨文 11g
我不反对使用任何语言或工具,让我以简单的方式获取这些数据。
更新:我发现了以下处理类似问题的问题。
答:
1赞
haki
7/5/2013
#1
这是个好问题。
Oracle 在 12c 中发布了一个测试管理包,我认为它解决了这个问题——我没有深入研究它,但也许它也与 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'
等等......
这不是一个可靠的解决方案,它与核心表很少且约束简单的架构兼容。
评论