oracle添加clob字段,oracle数据库clob字段处理

1、指定待插入字符串类型为clob,可以使用过程或存储过程

例子:

DECLARE

REALLYBIGTEXTSTRING CLOB := '待插入的海量字符串';

BEGIN

INSERT INTO test_table VALUES('test', REALLYBIGTEXTSTRING, '0');

commit;

end ;

2、blob字段数据转换为clob类型

CREATE OR REPLACE FUNCTION blob_to_clob (blob_in IN BLOB) RETURN CLOB

AS

v_clob    CLOB;

v_varchar VARCHAR2(32767);

v_start PLS_INTEGER := 1;

v_buffer PLS_INTEGER := 32767;

tmp_num number;

BEGIN

DBMS_LOB.CREATETEMPORARY(v_clob, TRUE);

tmp_num := CEIL(DBMS_LOB.GETLENGTH(blob_in) / v_buffer);

if tmp_num > 0 then --防止传入的BLOB为NULL或长度为0时引发错误

FOR i IN 1..tmp_num

LOOP

v_varchar := UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(blob_in, v_buffer, v_start));

DBMS_LOB.WRITEAPPEND(v_clob, LENGTH(v_varchar), v_varchar);

v_start := v_start + v_buffer;

END LOOP;

end if;

RETURN v_clob;

END blob_to_clob;

2.调用blob_to_clob 来完成转换

update gs_gift p set p.description1=blob_to_clob(p.description);

commit;

3、sqlload 大字段(LOB类型)的导入

https://www.open-open.com/pdf/aab245f2dcdb421f9c98ec00e695b8a6.html

http://blog.itpub.net/31015730/viewspace-2147266

https://blog.csdn.net/u011364306/article/details/50598321(操作参考文章)

1)数据保存在独立的文件中

CREATE TABLE LOBTBL

(

FILEOWNER   VARCHAR2(30),

FILENAME    VARCHAR2(200),

FILESIZE    NUMBER,

FILEDATA    CLOB,

CREATE_DATE DATE

);

[oracle@cancer sqlldr]$ cat ldr_case12_2.dat

2016-1-27  15:21  183   oracle  /home/oracle/sqlldr/ldr_case11_1.dat

2016-1-27  15:22  150   oracle  /home/oracle/sqlldr/ldr_case11_1.ctl

2016-1-27  15:22  1,714 oracle  /home/oracle/sqlldr/ldr_case11_1.log

2016-1-27  16:05  166   oracle  /home/oracle/sqlldr/ldr_case11_2.ctl

2016-1-27  16:13  136   oracle  /home/oracle/sqlldr/ldr_case11_2.bad

2016-1-27  16:13  204   oracle  /home/oracle/sqlldr/ldr_case11_2.dat

2016-1-27  16:13  1,696 oracle  /home/oracle/sqlldr/ldr_case11_2.log

2016-1-27  16:35  120   oracle  /home/oracle/sqlldr/ldr_case11_3.ctl

2016-1-27  16:55  188   oracle  /home/oracle/sqlldr/ldr_case11_3.dat

2016-1-27  16:55  1,695 oracle  /home/oracle/sqlldr/ldr_case11_3.log

2016-1-27  20:15  183   oracle  /home/oracle/sqlldr/ldr_case11_4.dat

2016-1-27  20:33  126   oracle  /home/oracle/sqlldr/ldr_case11_4.ctl

2016-1-27  20:33  3     oracle  /home/oracle/sqlldr/ldr_case11_4.bad

2016-1-27  20:33  1,829 oracle  /home/oracle/sqlldr/ldr_case11_4.log

--控制文件

--控制文件

[oracle@cancer sqlldr]$ cat ldr_case12_2.ctl

LOAD DATA

INFILE ldr_case12_2.dat

TRUNCATE INTO TABLE LOBTBL

(

CREATE_DATE position(1:16) date 'yyyy-mm-dd hh24:mi',

FILESIZE position(*+2:23) "to_number(:FILESIZE,'99,999,999')",

FILEOWNER position(*+2:30),

FILENAME position(*+2:68) "substr(:FILENAME,instr(:FILENAME,'/',-1)+1)",

FILEDATA LOBFILE(FILENAME) TERMINATED BY EOF

执行sqlldr命令,并查看结果

--执行sqlldr命令

[oracle@cancer sqlldr]$ sqlldr scott/tiger control=ldr_case12_2.ctl

要加载的数据没有分隔符,而是固定长字符串时,可以在SQL*Loader的控制文件中通过position关键字用来指定列的开始和结束位置。position通常有下面3种写法:

【SQL*Loader】SQL*Loader实验之(5)--固定长字符串数据处理时position的3种写法

http://blog.itpub.net/20335819/viewspace-698052/

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle解析CLOB字段可以使用DBMS_LOB包提供的功能。 CLOBOracle数据库中一种特殊的数据类型,用于存储大文本数据。在解析CLOB字段时,需要使用DBMS_LOB包中的一些过程和函数。 首先,可以使用DBMS_LOB.GETLENGTH函数获取CLOB字段的长度。这个函数返回CLOB字段的字符数。 然后,可以使用DBMS_LOB.SUBSTR函数截取指定长度的CLOB字段的子字符串。这个函数接受两个参数,第一个参数是CLOB字段本身,第二个参数是截取的起始位置,第三个参数是截取的长度。它返回指定长度的子字符串。 另外,可以使用DBMS_LOB.FILEEXISTS函数检查CLOB字段是否关联了外部文件,返回TRUE或FALSE。 如果CLOB字段关联了外部文件,可以使用DBMS_LOB.FILEOPEN函数打开这个文件,然后可以使用DBMS_LOB.READ函数从文件中读取数据。 另外,可以使用DBMS_LOB.CREATETEMPORARY函数创建一个临时LOB对象,可以将CLOB字段的数据复制到该临时LOB对象中,然后可以使用DBMS_LOB.READ函数从临时LOB对象中读取数据。 在解析CLOB字段时,需要注意的是,CLOB字段可能存储了非常大的文本数据,所以需要谨慎处理,以避免内存溢出或性能问题。可以使用块大小和缓冲区大小等参数来提高解析CLOB字段的效率。 总之,通过使用DBMS_LOB包提供的函数和过程,我们可以很方便地解析CLOB字段并进行各种操作,例如获取长度、截取子字符串、读取关联文件等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值