300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > oracle添加clob字段 oracle数据库clob字段处理

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

时间:2020-09-11 21:31:39

相关推荐

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-/pdf/aab245f2dcdb421f9c98ec00e695b8a6.html

/31015730/viewspace-2147266

/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

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

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

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

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

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

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

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

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

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

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

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

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

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

-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种写法

/20335819/viewspace-698052/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。