用SQLLOAD导入CLOB数据

10G,SUSE 9,SQLPLUS[@more@]

1,创建表结构

create table sqlload_test
( EMPNO number,
ENAME varCHAR2(20),
JOB varCHAR2(20),
MGR number,
SAL number,
COMM number,
DEPTNO number,
resume clob)

2,建立数据

oracle@linux:~> cat > ulcase91.dat <Resume for Mary Clark
Career Objective: Manage a sales team with consistent record breaking
performance.
Education: BA Business University of Iowa 1992
Experience: 1992-1994 - Sales Support at MicroSales Inc.
Won "Best Sales Support" award in 1993 and 1994
1994-Present - Sales Manager at MicroSales Inc.
Most sales in mid-South division for 2 years

oracle@linux:~> cat > ulcase92.dat <> Resume for Monica King
> Career Objective: President of large computer services company
> Education: BA English Literature Bennington, 1985
> Experience: 1985-1986 - Mailroom at New World Services
> 1986-1987 - Secretary for sales management at
> New World Services
> 1988-1989 - Sales support at New World Services
> 1990-1992 - Salesman at New World Services
> 1993-1994 - Sales Manager at New World Services
> 1995 - Vice President of Sales and Marketing at
> New World Services
> 1996-Present - President of New World Services
> EOF

oracle@linux:~> cat > ulcase93.dat <>Resume for Dan Miller
>Career Objective: Work as a sales support specialist for a services
>company
>Education: Plainview High School, 1996
>Experience: 1996 - Present: Mail room clerk at New World Services
>EOF

oracle@linux:~> cat sqldata.dat
7782,CLARK,MANAGER,7839,2572.50,,10,ulcase91.dat
7839,KING,PRESIDENT,,5500.00,,10,ulcase92.dat
7934,MILLER,CLERK,7782,920.00,,10,ulcase93.dat

3,建立控制文件

oracle@linux:~> cat >sld.ctl <> LOAD DATA
> INFILE 'sqldata'
> INTO TABLE sqlload_test
> REPLACE
> FIELDS TERMINATED BY ','
> ( EMPNO INTEGER EXTERNAL,
> ENAME CHAR,
> JOB CHAR,
> MGR INTEGER EXTERNAL,
> SAL DECIMAL EXTERNAL,
> COMM DECIMAL EXTERNAL,
> DEPTNO INTEGER EXTERNAL,
> RES_FILE FILLER CHAR,
> "RESUME" LOBFILE (RES_FILE) TERMINATED BY EOF NULLIF RES_FILE = 'NONE'
> )
> EOF
oracle@linux:~>

4,导入
oracle@linux:~> sqlldr hyf/hyf control=sld.ctl data=sqldata

SQL*Loader: Release 10.2.0.1.0 - Production on Fri Mar 28 13:30:23 2008

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Commit point reached - logical record count 3

5,查看日志
oracle@linux:~> cat sld.log

SQL*Loader: Release 10.2.0.1.0 - Production on Fri Mar 28 13:30:23 2008

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Control File: sld.ctl
Data File: sqldata.dat
Bad File: sqldata.bad
Discard File: none specified

(Allow all discards)

Number to load: ALL
Number to skip: 0
Errors allowed: 50
Bind array: 64 rows, maximum of 256000 bytes
Continuation: none specified
Path used: Conventional

Table SQLLOAD_TEST, loaded from every logical record.
Insert option in effect for this table: REPLACE

Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
EMPNO FIRST * , CHARACTER
ENAME NEXT * , CHARACTER
JOB NEXT * , CHARACTER
MGR NEXT * , CHARACTER
SAL NEXT * , CHARACTER
COMM NEXT * , CHARACTER
DEPTNO NEXT * , CHARACTER
RES_FILE NEXT * , CHARACTER
(FILLER FIELD)
"RESUME" DERIVED * EOF CHARACTER
Dynamic LOBFILE. Filename in field RES_FILE
NULL if RES_FILE = 0X4e4f4e45(character 'NONE')


Table SQLLOAD_TEST:
3 Rows successfully loaded.
0 Rows not loaded due to data errors.
0 Rows not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.


Space allocated for bind array: 132096 bytes(64 rows)
Read buffer bytes: 1048576

Total logical records skipped: 0
Total logical records read: 3
Total logical records rejected: 0
Total logical records discarded: 0

Run began on Fri Mar 28 13:30:23 2008
Run ended on Fri Mar 28 13:30:24 2008

Elapsed time was: 00:00:00.28
CPU time was: 00:00:00.03

6,SQLPLUS登录进行数据验证

SQL> select count(*) from sqlload_test;

COUNT(*)
----------
3
SQL> set long 2000
SQL> SQL> select resume from sqlload_test;

RESUME
--------------------------------------------------------------------------------
Resume for Mary Clark
Career Objective: Manage a sales team with consistent record breaking
performance.
Education: BA Business University of Iowa 1992
Experience: 1992-1994 - Sales Support at MicroSales Inc.
Won "Best Sales Support" award in 1993 and 1994
1994-Present - Sales Manager at MicroSales Inc.
Most sales in mid-South division for 2 years


esume for Monica King

RESUME
--------------------------------------------------------------------------------
Career Objective: President of large computer services company
Education: BA English Literature Bennington, 1985
Experience: 1985-1986 - Mailroom at New World Services
1986-1987 - Secretary for sales management at
New World Services
1988-1989 - Sales support at New World Services
1990-1992 - Salesman at New World Services
1993-1994 - Sales Manager at New World Services
1995 - Vice President of Sales and Marketing at
New World Services
1996-Present - President of New World Services

RESUME
--------------------------------------------------------------------------------

Resume for Dan Miller
Career Objective: Work as a sales support specialist for a services
company
Education: Plainview High School, 1996
Experience: 1996 - Present: Mail room clerk at New World Services

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/703656/viewspace-1001622/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/703656/viewspace-1001622/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要导出和导入Oracle数据库中的CLOB和BLOB数据类型,可以使用以下方法: 1. 使用Oracle自带的exp和imp工具导出和导入整个数据库或特定表的数据。在导出时,使用参数“file=clob_data.dmp”或“file=blob_data.dmp”指定导出文件名。在导入时,使用参数“file=clob_data.dmp”或“file=blob_data.dmp”指定导入文件名。 2. 使用Oracle SQL Developer工具导出和导入特定表的数据。在导出时,选择要导出的表,右键点击选择“导出”选项,选择“导出数据”并选择“导出为LOB文件”。在导入时,选择要导入的表,右键点击选择“导入”选项,选择“导入数据”并选择“从LOB文件导入”。 3. 使用PL/SQL代码导出和导入CLOB和BLOB数据。在导出时,使用SELECT语句查询CLOB或BLOB列的值,并将其写入文件中。在导入时,使用INSERT语句将文件中的值插入到CLOB或BLOB列中。 以上是几种常见的导出和导入Oracle数据库CLOB和BLOB数据的方法。具体使用哪种方法取决于具体情况和需求。 ### 回答2: Oracle是一个广泛使用的关系型数据库,其中包含了CLOB(字符大对象)和BLOB(二进制大对象)类型数据。这些数据类型通常用于存储大型文本和图像等二进制数据。在Oracle中,导出和导入CLOB和BLOB数据是非常常见的任务。本文将介绍如何导出和导入这些类型数据。 首先,我们需要了解Oracle提供的导出工具是exp和expdp。exp是旧版工具,而expdp是新版工具。在导出CLOB和BLOB数据时,我们建议使用expdp,因为它是专门为大量导出数据而设计的。下面我们来看看导出CLOB数据的方法: 1. 使用expdp导出 使用expdp命令导出CLOB数据需要指定以下参数: - expdp system/password tables=table_name directory=directory_name dumpfile=file_name.dmp lob_file=file_name.log EXCLUDE=STATISTICS 其中table_name是要导出的表名,directory_name是导出文件的路径,file_name是导出文件的名称,lob_file是LOB类型的文件的名称。 2. 使用SQL*Plus导出 我们也可以使用SQL*Plus命令导出CLOB数据。以下是步骤: 1)使用SQL*Plus连接到Oracle数据库。 2)使用以下命令在本机上创建目录 OBJECT_DIR: CREATE OR REPLACE DIRECTORY OBJECT_DIR AS 'C:\TEMP'; 3)使用以下命令导出CLOB数据: SET LONG 10000 SET PAGESIZE 0 SET LINESIZE 1000 SET FEEDBACK OFF SPOOL CLOB_Export.sql SELECT 'SELECT ' || column_name || ' FROM ' || table_name || ' WHERE ' || where_clause || ';' FROM all_tab_cols WHERE data_type = 'CLOB' AND table_name = 'TABLE_NAME'; SPOOL OFF 4)使用以下命令将生成的SQL脚本文件CLOB_Export.sql导出到本地目录: exp userid=username/password file=dumpfile.dmp owner=owner_name log=clob_export.log 接下来我们会介绍如何导入CLOB和BLOB数据。 1. 使用impdp导入 使用impdp命令导入CLOB数据需要指定以下参数: - impdp system/password directory=directory_name dumpfile=file_name.dmp logfile=file_name.log tables=table_name 其中directory_name是导入文件的路径,file_name是导入文件的名称,table_name是要导入数据的表的名称。 2. 使用SQL*Plus导入 我们也可以使用SQL*Plus命令导入CLOB数据。以下是步骤: 1)使用SQL*Plus连接到Oracle数据库。 2)使用以下命令在本机上创建LOB的目录 LOB_DIR: CREATE OR REPLACE DIRECTORY LOB_DIR AS 'C:\TEMP'; 3)使用以下命令在Oracle中创建LOB表: CREATE TABLE lob_table ( lob_column CLOB ); 4)使用以下命令将LOB类型的文件loaded_file.xml导入到LOB表中: INSERT INTO lob_table (lob_column) VALUES (EMPTY_CLOB()); SELECT lob_column FROM lob_table FOR UPDATE; DECLARE infile BFILE :=BFILENAME('OBJECT_DIR', 'loaded_file.xml'); lob_loc CLOB; BEGIN DBMS_LOB.OPEN(lob_column, DBMS_LOB.LOB_READWRITE); DBMS_LOB.LOADFROMFILE(lob_column, infile, DBMS_LOB.GETLENGTH(infile)); DBMS_LOB.CLOSE(lob_column); COMMIT; END; / 以上是导出导入CLOB/BLOB数据的两种方法,根据实际情况可以选择使用expdp、impdp或SQL*Plus导出和导入。然而在导入CLOB/BLOB时,需要特别注意数据库版本以及LOB大小限制等问题。 ### 回答3: 在Oracle中,CLOB和BLOB是用来存储大文本和二进制数据数据类型。有时候我们需要对这些数据进行导入和导出。在这篇文章中,我会介绍如何将CLOB和BLOB数据导入和导出。 导出CLOB/BLOB数据 在Oracle中,可以使用DBMS_LOB包来导出CLOB和BLOB数据。首先,我们需要使用SELECT语句来查询需要导出的数据。查询的结果会以一个CLOB或BLOB对象的形式存在,然后我们可以把这个对象导出到一个文件中。以下是导出CLOB和BLOB对象到文件中的步骤: 1.查询需要导出的数据 例如,我们可以使用以下SELECT语句来查询一个CLOB表中的数据: SELECT clob_column FROM clob_table; 2.将查询结果存储到变量中 为了方便将查询结果导出到文件中,我们需要将查询结果存储到一个变量中。我们可以使用PL/SQLSQL*Plus来完成这个任务。以下是一个PL/SQL的例子: DECLARE my_data CLOB; BEGIN SELECT clob_column INTO my_data FROM clob_table; END; 3.将变量的值导出到文件中 使用DBMS_LOB包中的函数,可以将变量的值导出到文件中,以下是一个导出CLOB数据的例子: DECLARE my_data CLOB; my_file UTL_FILE.FILE_TYPE; BEGIN SELECT clob_column INTO my_data FROM clob_table; my_file := UTL_FILE.FOPEN('MY_DIR', 'my_file.txt', 'w'); DBMS_LOB.FILEEXPORT(my_file, my_data); UTL_FILE.FCLOSE(my_file); END; 注意: - 'MY_DIR'是Oracle指定的一个目录,需要在数据库中提前定义。 - 'my_file.txt'是导出文件的名称 - 'w'表示以覆盖模式写入文件 这个例子将会把查询出来的CLOB数据导出为txt文件。 导入CLOB/BLOB数据 同样的,我们可以使用DBMS_LOB包来导入CLOB和BLOB数据。以下是导入CLOB和BLOB数据的步骤: 1.读取文件内容 使用UTL_FILE包中的函数,可以读取文件的内容到一个变量中,例如以下SQL*Plus的命令: DEFINE my_file='my_file.txt' DECLARE my_data CLOB; my_file UTL_FILE.FILE_TYPE; BEGIN my_file := UTL_FILE.FOPEN('MY_DIR', '&my_file', 'r'); UTL_FILE.GET_LINE(my_file, my_data); UTL_FILE.FCLOSE(my_file); END; 注意: - 'my_file.txt'是要导入数据库的文件名称 - MY_DIR是Oracle指定的一个目录,需要在数据库中提前定义。 2.将变量的值导入数据库中 使用INSERT语句将变量的值插入到CLOB表中,例如以下的SQL*Plus命令: INSERT INTO clob_table (clob_column) VALUES (my_data); 注意: 在Oracle中,插入CLOB和BLOB数据时,要使用专门的函数,例如: INSERT INTO clob_table (clob_column) VALUES (TO_LOB('some text')); 以上就是导出和导入CLOB/BLOB数据的步骤。当然,在实际操作中可能会遇到各种各样的问题,我们需要仔细阅读相关的文档,查找正确的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值