oracle查看blob內(nèi)容 oracle中Blob和Clob類型的區(qū)別是什么?
oracle中Blob和Clob類型的區(qū)別是什么?BLOB和CLOB都是大字段類型,BLOB是按二進(jìn)制來存儲的,而CLOB是可以直接存儲文字的。其實兩個是可以互換的的,或者可以直接用LOB字段代替這兩
oracle中Blob和Clob類型的區(qū)別是什么?
BLOB和CLOB都是大字段類型,BLOB是按二進(jìn)制來存儲的,而CLOB是可以直接存儲文字的。其實兩個是可以互換的的,或者可以直接用LOB字段代替這兩個。但是為了更好的管理ORACLE數(shù)據(jù)庫,通常像圖片、文件、音樂等信息就用BLOB字段來存儲,先將文件轉(zhuǎn)為二進(jìn)制再存儲進(jìn)去。而像文章或者是較長的文字,就用CLOB存儲,這樣對以后的查詢更新存儲等操作都提供很大的方便。
Clob和Blob的區(qū)別?
CLOB和BLOB其實在RMDBS中最終都是以二進(jìn)制流進(jìn)行存儲的。最大的差別在于,CLOB有字符集的概念,在從存儲和讀出的過程中由RMDBS做字符集解析。沒有絕對的優(yōu)劣,只有適合的環(huán)境。Case1:沒有字符集概念的內(nèi)容(例如:圖片流,媒體流)這些object沒有字符集概念,解析只能由app程序完成。因此,用BLOB方式要比CLOB省去了字符集解析的過程,處理速度提升。當(dāng)然,這種類型的數(shù)據(jù)最好還是不要放在數(shù)據(jù)庫中存儲。無論是效率還是成本都沒有用文件系統(tǒng)存來得好。Case2:大文本內(nèi)容(例如:論壇帖子,爬蟲輸出的html源碼等)這些object用CLOB存儲的優(yōu)勢是顯然的:通過數(shù)據(jù)庫客戶端程序可直接閱讀,備份文件明文適合數(shù)據(jù)處理。當(dāng)然,也不是絕對的。某些情況下,為了存儲效率考慮,會直接在APP中做字符集解析并進(jìn)行壓縮(zlib等)。一般壓縮的輸出流都是binary形式的,這個時候就會選擇BLOB。
如何給oracle導(dǎo)入blob和clob字段?
例:假設(shè)給oracle數(shù)據(jù)庫導(dǎo)入blob類型的圖片,圖片放在目錄G:images下。
1.先創(chuàng)建一個目錄directory,命名為IMAGES; CREATE OR REPLACE DIRE,TORY IMAGES AS "G:test"或者直接在PlSql Directories目錄下新建目錄;
2.創(chuàng)建一個存儲過程,批量導(dǎo)入blob create or replace procedure img_insert asbeginDECLARE f_lob bfile--文件類型b_lobblob --用來存儲圖片的名稱filenamevarchar2(400)begin --循環(huán)的初始值for i in 1 .. 100 loop --找出每一列的文件名,因為文件名和圖片名稱是一樣的 select t.flnm into filename from ZS_GC_SNIMDT t where t.id =i --查找到之后,執(zhí)行update操作,插入空的blob (注意IMAGES一定要大寫) update ZS_GC_SNIMDT set brfl = empty_blob()whereid = i return brfl into b_lob --獲取指定目錄下的文件 f_lob := bfilename("IMAGES", filename) -- 以只讀的方式打開文件 dbms_lob.fileopen(f_lob, dbms_lob.file_readonly)--傳遞對象 dbms_lob.loadfromfile(b_lob, f_lob, dbms_lob.getlength(f_lob)) --關(guān)閉原始文件