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

问题:

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”

如何解决导出clobblob类型数据报错的问题

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

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

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

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

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

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

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

--不包含clobblob的表

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方式导出包含clobblob的数据

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Oracle查询含有CLOB字段慢的问题主要原因是CLOB字段的特性决定了其存储方式和查询性能。CLOB字段存储的是大文本数据,其在数据库中以存放在不同的页中,而非在表中直接存储,这导致在查询时需要从多个页中读取数据,从而增加了查询的时间。 另一个可能的原因是查询语句中对CLOB字段进行了全表扫描或者模糊查询的操作。全表扫描将导致查询所有的数据行,而模糊查询则需要对每一条记录进行匹配,这些操作都会增加查询的时间。 解决这个问题的方法有以下几种: 1. 创建适当的索引:对于经常查询的CLOB字段,可以创建全文索引或者函数索引,这样可以加快查询速度。 2. 使用子查询:如果查询结果中不需要包含CLOB字段,可以将CLOB字段的查询放置在子查询中,然后在主查询中引用子查询的结果。这样可以减少查询CLOB字段的开销。 3. 优化查询语句:尽量避免使用全表扫描和模糊查询等低效操作,可以根据具体需求优化查询语句,减少查询CLOB字段的次数和范围。 4. 使用分页查询:如果查询结果中仅需要部分记录,可以使用分页查询的方式,每次只查询指定页的记录,这样可以减少读取CLOB字段数据量。 最后,如果以上方法仍然不能解决查询慢的问题,还可以考虑增加服务器的硬件资源,如增加内存或者更快的存储设备,以提高查询性能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值