1、指定待插入字符串類型為clob,可以使用過程或存儲過程
成都創(chuàng)新互聯(lián)長期為成百上千客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為離石企業(yè)提供專業(yè)的網(wǎng)站制作、成都網(wǎng)站建設,離石網(wǎng)站改版等技術(shù)服務。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
例子:
DECLARE
?REALLYBIGTEXTSTRING CLOB := '待插入的海量字符串';
BEGIN
? ?INSERT INTO test_table VALUES('test', REALLYBIGTEXTSTRING, '0');
? ?commit;
end ;
2、blob字段數(shù)據(jù)轉(zhuǎn)換為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時引發(fā)錯誤
? ? ? ? ? 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.調(diào)用blob_to_clob 來完成轉(zhuǎn)換
?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)數(shù)據(jù)保存在獨立的文件中
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 hh34: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??
執(zhí)行sqlldr命令,并查看結(jié)果
--執(zhí)行sqlldr命令
[oracle@cancer sqlldr]$ sqlldr scott/tiger control=ldr_case12_2.ctl
要加載的數(shù)據(jù)沒有分隔符,而是固定長字符串時,可以在SQL*Loader的控制文件中通過position關(guān)鍵字用來指定列的開始和結(jié)束位置。position通常有下面3種寫法:
【SQL*Loader】SQL*Loader實驗之(5)--固定長字符串數(shù)據(jù)處理時position的3種寫法
http://blog.itpub.net/20335819/viewspace-698052/