日期:2014-05-16  浏览次数:20406 次

真实案例:有BLOB的表数据从测试库导入到正式库如何操作

公司开发人员提这样一问题,

测试环境有一张含有BLOB字段的A表。里面有20条数据。
正式环境A表有100条数据。
现在想把测试环境A表里的数据增量的导入到正式环境。怎么弄?

?

环境说明一下,

测试环境和正式环境都是oracle 10g for linux。

?

分析一下,

这个问题本质在于有BLOB字段。

?

(miki西游 @mikixiyou 文档 ,链接: http://mikixiyou.iteye.com/blog/1560950 )

?

解决方法,

我列了这样一个解决步骤,
1、将测试库A表,CTAS一下成一张新表,如B表。
2、将B表用exp导出,或者expdp导出。
3、将导出的文件数据导入到正式库上。
4、在正式库上,你就会看到B表数据了,是不,100条的那个。
5、在正式库上,将B表数据插入到A表上,这里插入有啥条件判断的,自己根据逻辑去处理一下。

其实这个步骤还是烦了点。得知测试库和正式库的A表数据是不重复的,那么连A表CTAS成B表的操作都不要做了。
在imp时加一个ignore=y或impdp时加CONTENT=DATA_ONLY。

还有一点,切记。在正式库操作之前,备份一下A表。

一直觉得,开发人员学习一下expdp/impdp知识会有帮助,求人不予求己。

你觉得我说的对吗?


您可以参考下列文档:
Oracle 10g expdp /impdp在项目中实践总结

expdp 和impdp在有条件时导出入数据

这是两份关于expdp和impdp使用总结。


?

1 楼 kidding87 2012-06-18  
说了半天不明白楼主主要想表达什么呢?
impdp/expdp 是对于本机使用的
我看你这个情况用dblink跟好使些吧
2 楼 mikixiyou 2012-06-18  
kidding87 写道
说了半天不明白楼主主要想表达什么呢?
impdp/expdp 是对于本机使用的
我看你这个情况用dblink跟好使些吧


可能是我表达不清楚。
大意是将测试库上一个表上数据如果复制到生产库上同样的一张表中去。生产库上这种表已经有数据了。
这个和普通的表数据复制有一点区别是,此表有 BLOB 字段。

测试库和生产库的网络压根不通的,所以dblink不可用。