oracle如何导出含有CLOB格式字段的数据

系统 6004 0

 问题:        

 1、 使用  oracle dump方式导出的数据在导入的时候不能随意选择一张表的数据进行导入;

一般业务的表的数量都有  1000左右,在出现由于某张表数据异常导致的故障时,用  dump文件进行恢复基本不可行或者很费事;

 2、 表存在外键约束和触发器,使用  oracle dump import方式导入表的时候不能非常简单

的禁止触发器和外键,导致大量错误产生,导入的表的数据不全,部分表数据没有导入;

 3、 当修改了某些表的数据后需要将这些表的数据恢复到测试环境搭建时的数据,  import  

不能将这些表的数据清空后重新导入。

 4、 当修改了某些表的字段后需要将这些表的数据恢复到测试环境搭建时的数据,  import  

不能将这些表重建后重新导入。

 解决:  

 PL/SQL Developer导入导出工具

 PL/SQL Developer位于  PLSQL DEV工具的  “Tools”菜单下的  “Export tables„”  “Import  

 tables„”下,可以进行数据的导出和导入。

 导出功能介绍  

Where clause:

使导出操作支持where条件,比如你只需要导出每张表的10000条记录,可以在输入框里输入

“rownum < 10001”。

Compress file:

选中后支持导出文件的压缩,节省存储空间,但是压缩会占用多余的时间。

Include storage:

导出的文件中包含建表信息,如果需要在导入的时候能支持建表操作,需要选中该项。

 导入功能介绍  

 Drop tables

支持在导入数据前先删除表,选择该项后,默认选择  “Create tables”选项,并且  “Truncate  

 tables”  “Delete table”操作变成灰色不可用状态。

 Create tables

支持在导入数据前先创建表,比如我们已将建好了用户,这个时候需要导入表而之前又没有执

行建表脚本的时候,可以选中此项。

 Truncate tables

支持在导入数据前先清空表数据,想恢复表数据到建测试环境的时候可以使用这个选项,该选

项和  “Delete tables”互斥。

 Delete tables

支持在导入数据前删除表数据,这个选项目前还没有发现比较特殊的使用意义,该选项和

 “Truncate tables”互斥。该选项的导入速度大大慢于  “Truncate tables”,一般使用  “Truncate tables”

 如何解决导出      clob        和      blob        类型数据报错的问题  

当表字段中含有  clob  blob类型数据时,使用  PL/SQL Developer导出会报  stream read error  

的错误,导出操作终止,说明  PL/SQL Developer方式导出不支持这种类型,  oracle export方式可以支持这种类型。

由于需要导出的表很多,  PL/SQL在导出前都要对需要导出的表进行分析,通常都会花费十几分

钟的时间,然而由于某张表存在  clob  blob类型数据时就会异常终止,那之前的操作时间就会浪费,为了导出所有表需要将导出的表进行标记,只导出没有  clob  blob类型数据的表。我们通常的做法是在导出表的时候用  ctrl或者  shift按键进行手工选择,通过导出的日志记录不能导出的表,然后手工将这些表反选出待导出的表。但是这样操作费时费力,需要通过不停反复的操作,才能知道哪些表不能导出。

 如何使用      oracle        系统视图      all_tab_columns        和      PL/SQL        在导出表的时候提供的  

 Object selection        功能快速导出不包含      clob        和      blob        的表数据。  

 1、 使用下面的  sql语句拼出  Object selection的文件内容。

 --不包含  clob  blob的表

 select distinct('TABLE "'||a.OWNER ||'"."'||a.TABLE_NAME||'"') from sys.all_tab_columns a  

 where a.OWNER = '用户名'  

 and a.TABLE_NAME not in (select t.TABLE_NAME from sys.all_tab_columns t where t.OWNER =  

 '用户名' and t.DATA_TYPE in ('CLOB','BLOB'))  

 

 2、 按照上面的语句的执行结果生成  Object selection的文件(后缀是  .osf),文件的内容

如下:

 PL/SQL Developer Object Selection File  

 1  

 TABLE "用户名"."表名1"  

 TABLE "用户名"."表名2"  

 TABLE "用户名"."表名3"  

 3、 在导出表功能的表选择框里单击右键选择  “Load Object selection”,选择上一步制

作的文件  ,完成表的选择。

 4、选择合适的参数,进行导出操作。 用  oracle export方式导出包含  clob  blob的数据。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论