plsql导出大字段数据方法

基于

PL/SQL

的数据库备份方法

 

PL/SQL Developer

Oracle

数据库中用于导入或导出数据库的主要工具,本文主要介绍

了利用

PL/SQL Developer

导入和导出数据库的过程,

并对导入或导出时的一些注意事项进行

了说明,接下来我们就一一介绍。

 

导出步骤:

 

1

tools ->export user object 

选择选项,导出

.sql

文件。

 

2

tools ->export tables-> Oracle Export 

选择选项导出

.dmp

文件。

 

导入步骤:

 

注:导入之前最好把以前的表删除,当然导入另外数据库除外。

 

1

tools->import tables->SQL Inserts 

导入

.sql

文件。

 

2

tools->import talbes->Oracle Import

然后再导入

dmp

文件。

 

一些说明:

 

Tools->Export User Objects

导出的是建表语句(包括存储结构)

PS

:这种方式只能导出

属于这个用户的表,其他用户的表不能导出,建议用命令行

(exp,imp)

导出。

 

Tools->Export Tables

里面包含三种导出方式,三种方式都能导出表结构以及数据,如下:

 

 

Oracle Export 

 

Sql Insert 

 

pl/sql developer 

第一种是导出为

.dmp

的文件格式,

.dmp

文件是二进制的,

可以跨平台,

还能包含权限,

效率也很不错,用得最广

 

 

第二种是导出为

.sql

文件的,

可用文本编辑器查看,

通用性比较好,

但效率不如第一种,

适合小数据量导入导出。尤其注意的是表中不能有大字段

 

blob,clob,long

,如果有,会提

示不能导出

(

提示如下:

 

table 

contains 

one 

or 

more 

LONG 

columns 

cannot 

export 

in 

sql 

format,user Pl/sql developer format instead)

 

第三种是导出为

.pde

格式的,

.pde

Pl/sql 

developer

自有的文件格式,只能用

Pl/sql 

developer

自己导入导出,不能用编辑器查看。

 

PS

:只有

"Oracle 

Export"

方式导出再导入后,表结构和索引结构没有发生变化,另两种方式

都改变了索引类型。

 

---------------------------------------------------------------------------------------------------------------------------------

----------------------------- 

1

 

 

导入数据的苦恼

 

最近,一直再为搭建测试数据库的事情烦恼,主要碰到如下困难:

 

 

1

、使用

oracle 

dump

方式导出的数据在导入的时候不能随意选择一张表的数据进行导

入;

一般业务的表的数量都有

1000

左右,

在出现由于某张表数据异常导致的故障时,

dump

文件进行恢复基本不可行或者很费事;

 

 

2

、表存在外键约束和触发器,使用

oracle 

dump 

import

方式导入表的时候不能非常简

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

 

 

3

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

import

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

 

 

4

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

import

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

 

 

那么有没有一个工具能够解决上面我们这位工程师的苦恼呢?

 

 

 

2

 

 

PL/SQL Developer

导入导出工具

 

PL/SQL Developer

位于

PLSQL DEV

工具的

Tools

菜单下的

Export tables

„”

Import 

tables

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

 

2.1 

导出功能介绍

 

 

 

Where clause: 

使导出操作支持

where

条件,

比如你只需要导出每张表的

10000

条记录,

可以在输入框里输入“

rownum < 10001

 

Compress 

file: 

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

间。

 

Include storage: 

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

需要选中该项。

 

2.2 

导入功能介绍

 

 

 

Drop tables

支持在导入数据前先删除表,

选择该项后,

默认选择

Create tables

选项,

并且“

Truncate tables

”和“

Delete table

”操作变成灰色不可用状态。

 

Create 

tables

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

导入表而之前又没有执行建表脚本的时候,可以选中此项。

 

 

Truncate 

tables

:支持在导入数据前先清空表数据,想恢复表数据到建测试环境的时候

可以使用这个选项,该选项和“

Delete tables

”互斥。

 

 

Delete 

tables

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

用意义,该选项和“

Truncate tables

”互斥。该选项的导入速度大大慢于“

Truncate tables

一般使用“

Truncate tables

 

2.3 

如何解决导出

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 

where 

 

a.OWNER 

'ICDPUB' 

and 

a.TABLE_NAME 

not 

in 

(select 

t.TABLE_NAME 

from 

sys.all_tab_columns 

where 

t.OWNER 

'ICDPUB' 

and 

t.DATA_TYPE 

in 

('CLOB','BLOB')) 

 

 

注意:上面的

sql

语句里的

ICDPUB

是用户名

 

 

2

、按照上面的语句的执行结果生成

Object selection

的文件(后缀是

.osf

,文件的内容

如下:

 

 

 

 

 

PL/SQL Developer Object Selection File 1 

 

TABLE "ICDPUB"."ACTIVE_ALARMS" 

 

TABLE "ICDPUB"."ALLAPPOINT" 

 

TABLE "ICDPUB"."ALLOPTIONVIEW" 

 

TABLE "ICDPUB"."ALLOTCONFIG" 

 

TABLE "ICDPUB"."ALLPAPERAUTHVIEW" 

 

TABLE "ICDPUB"."ALLPAPERVIEW" 

 

TABLE "ICDPUB"."ALLQUESTIONVIEW" 

3

、在导出表功能的表选择框里单击右键选择“

Load Object selection

,选择上一步制作

的文件

,

完成表的选择。

 

4

、选择合适的参数,进行导出操作。

 

5

、用

oracle export

方式导出包含

clob

blob

的数据。

 

你可能感兴趣的:(plsql导出大字段数据方法)