LOB大對象處理:主要是用來存儲大量數據的數據庫字段,最大能夠存儲4G字節的非結構化數據。主要介紹字符類型和二進制文件類型LOB數據的存儲,單獨介紹二進制類型LOB數據的存儲。
數據庫
一. Oracle中的LOB數據類型分類
1,按存儲數據的類型分:
①字符類型:
CLOB:存儲大量單字節字符數據。
NLOB:存儲定寬多字節字符數據。
②二進制類型:
BLOB:存儲較大無結構的二進制數據。
③二進制文件類型:
BFILE:將二進制文件存儲在數據庫外部的操做系統文件中。存放文件路徑。
2,按存儲方式分:
①存儲在內部表空間:
CLOB,NLOB和BLOB
②指向外部操做系統文件:
BFILE編程
2、大對象處理方法。參考書 美河提供.精通Oracle.10g.Pl.SQL編程ide
一、DBMS_LOB.Read():從LOB數據中讀取指定長度數據到緩衝區的過程。函數
DBMS_LOB.Read(LOB數據,指定長度,起始位置,oop
存儲返回LOB類型值變量);大數據
二、DBMS_LOB.SubStr():從LOB數據中提取子字符串的函數。網站
DBMS_LOB.SubStr(LOB數據,指定提取長度,提取起始位置): spa
③:DBMS_LOB.InStr():從LOB數據中查找子字符串位置的函數。
DBMS_LOB.InStr(LOB數據, 子字符串);操作系統
④:DBMS_LOB.GetLength():返回指定LOB數據的長度的函數。
DBMS_LOB.GetLength(LOB數據);.net
⑤:DBMS_LOB.Compare():比較二個大對象是否相等。返回數值0爲相等,-1爲不相等。
DBMS_LOB.Compare(LOB數據,LOB數據);
六、DBMS_LOB.Write():將指定數量的數據寫入LOB的過程。
DBMS_LOB.Write(被寫入LOB, 寫入長度(指寫入LOB數據),寫入起始位置(指被寫入LOB),寫入LOB數據);
七、DBMS_LOB.Append():將指定的LOB數據追加到指定的LOB數據後的過程。
DBMS_LOB.Append(LOB數據,LOB數據);
八、DBMS_LOB.Erase():刪除LOB數據中指定位置的部分數據的過程;
DBMS_LOB.Erase(LOB數據,指定刪除長度, 開始刪除位置);
九、DBMS_LOB.Trim():截斷LOB數據中從第一位置開始指定長度的部分數據的過程;
DBMS_LOB.Trim(LOB數據,截斷長度);
十、DBMS_LOB.Copy():從指定位置開始將源LOB複製到目標LOB;
DBMS_LOB.Copy(源LOB,目標LOB,複製源LOB長度,複製到目標LOB開始位置,複製源LOB開始位置)
例如:循環輸出xml大數據內容
declare
amount number;
buf varchar2(10000) := '';
temp varchar2(1000) := '';
begin
amount := 1;
for i in 1..200 loop
temp := '';
select dbms_lob.substr(krm.doc_content(clob類型),400,amount) into temp from km_review_main/*@ekp_link*/ krm
where krm.fd_id = '138eb83e89178bcce17136b43f8ab176';
amount := amount + 400;
DBMS_OUTPUT.put_line(temp);
end loop;
end;
參考網站: