Oracle BLOB型別的資料如何檢視和下載?
Oracle BLOB型別的資料如何檢視和下載?
有一個欄位是BLOB型別的,裡邊儲存了一個pdf檔案。現在想檢視這個pdf的具體內容。使用PLSQL Developer竟然報錯,看不到具體pdf的內容 (注意:第二天,我又用Foxit Reader 福昕 pdf軟體,結果可以開啟的,用2345pdf軟體是打不開的) 。使用External或Image或HTML檢視都看不了。
這裡說明一點,如果勾選了下邊的“Execute automatically next time”,那麼每次開啟BLOB都會用你選擇的外部軟體來開啟的。所以,該選項最好不要選擇, 萬一選擇了,那麼就可以按ctrl再單擊BLOB即可重新開啟該對話方塊。
其實,Oracle自帶的“Oracle SQL Developer”這個軟體還是比較好的,加下來就使用這個軟體來下載資料庫中的pdf檔案。 雙擊BLOB欄位即可出現編輯按鈕,然後點選編輯按鈕即可出現對話方塊。在對話方塊中可以選擇匯出到本地或使用外部編輯器開啟都行。
使用以下程式碼可以插入BLOB型別的圖片或pdf文件到Oracle資料庫中:
drop table IMAGE_LOB; CREATE TABLE IMAGE_LOB ( T_ID VARCHAR2 (5) NOT NULL, T_IMAGE BLOB NOT NULL ); --插入blob檔案 CREATE OR REPLACE DIRECTORY IMAGES AS '/home/oracle/'; CREATE OR REPLACE NONEDITIONABLE PROCEDURE IMG_INSERT(TID VARCHAR2, FILENAME VARCHAR2) AS F_LOB BFILE; B_LOB BLOB; BEGIN INSERT INTO IMAGE_LOB (T_ID, T_IMAGE) VALUES (TID, EMPTY_BLOB()) RETURN T_IMAGE 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)); DBMS_LOB.FILECLOSE(F_LOB); COMMIT; END; / BEGIN IMG_INSERT('1','1.jpg'); IMG_INSERT('2','2.jpg'); IMG_INSERT('3','1.pdf'); END; / select length(t_image) from image_lob; --可以檢視該欄位佔用的空間大小 SELECT * FROM image_lob; ----------- 匯出blob檔案 DECLARE l_file utl_file.file_type; --l_lob BLOB; l_offset INT := 1; l_amount INT := 32767; l_len INT; l_buffer RAW(32767); BEGIN FOR cur IN (SELECT t_image,t.t_id FROM image_lob t) LOOP l_file := utl_file.fopen('IMAGES', cur.t_id||'.jpg', 'wb', 32767); l_len := dbms_lob.getlength(cur.t_image); l_offset := 1; WHILE l_offset < l_len LOOP dbms_lob.read(cur.t_image, l_amount, l_offset, l_buffer); utl_file.put_raw(l_file, l_buffer, TRUE); l_offset := l_offset + l_amount; END LOOP; utl_file.fclose(l_file); END LOOP; END; /
注意:這裡匯出的檔案都是jpg格式的,如果儲存的是pdf或其它格式的檔案,那麼在匯出完成後只需要將檔案的字尾名修改掉即可,並不會損壞檔案。
Oracle中 lob欄位採用獨立的lob segment來儲存,因此表的大小不能只檢視dba_segments.
mos給出了查詢語句:
How to Compute the Size of a Table containing Outline CLOBs and BLOBs (文件 ID 118531.1)
ACCEPT SCHEMA PROMPT 'Table Owner: ' ACCEPT TABNAME PROMPT 'Table Name: ' SELECT (SELECT SUM(S.BYTES) -- The Table Segment size FROM DBA_SEGMENTS S WHERE S.OWNER = UPPER('&SCHEMA') AND (S.SEGMENT_NAME = UPPER('&TABNAME'))) + (SELECT SUM(S.BYTES) -- The Lob Segment Size FROM DBA_SEGMENTS S, DBA_LOBS L WHERE S.OWNER = UPPER('&SCHEMA') AND (L.SEGMENT_NAME = S.SEGMENT_NAME AND L.TABLE_NAME = UPPER('&TABNAME') AND L.OWNER = UPPER('&SCHEMA'))) + (SELECT SUM(S.BYTES) -- The Lob Index size FROM DBA_SEGMENTS S, DBA_INDEXES I WHERE S.OWNER = UPPER('&SCHEMA') AND (I.INDEX_NAME = S.SEGMENT_NAME AND I.TABLE_NAME = UPPER('&TABNAME') AND INDEX_TYPE = 'LOB' AND I.OWNER = UPPER('&SCHEMA'))) "TOTAL TABLE SIZE" FROM DUAL;
About Me
........................................................................................................................ ● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除 ● 本文在itpub( http://blog.itpub.net/26736162 )、部落格園( http://www.cnblogs.com/lhrbest )和個人weixin公眾號( xiaomaimiaolhr )上有同步更新 ● 本文itpub地址: http://blog.itpub.net/26736162 ● 本文部落格園地址: http://www.cnblogs.com/lhrbest ● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/ ● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/ ● DBA寶典今日頭條號地址: ........................................................................................................................ ● QQ群號: 230161599 (滿) 、618766405 ● weixin群:可加我weixin,我拉大家進群,非誠勿擾 ● 聯絡我請加QQ好友 ( 646634621 ) ,註明新增緣由 ● 於 2019-03-01 06:00 ~ 2019-03-31 24:00 在魔都完成 ● 最新修改時間:2019-03-01 06:00 ~ 2019-03-31 24:00 ● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解 ● 版權所有,歡迎分享本文,轉載請保留出處 ........................................................................................................................ ● 小麥苗的微店 : ● 小麥苗出版的資料庫類叢書 : http://blog.itpub.net/26736162/viewspace-2142121/ ● 小麥苗OCP、OCM、高可用網路班 : http://blog.itpub.net/26736162/viewspace-2148098/ ● 小麥苗騰訊課堂主頁 : https://lhr.ke.qq.com/ ........................................................................................................................ 使用 weixin客戶端 掃描下面的二維碼來關注小麥苗的weixin公眾號( xiaomaimiaolhr )及QQ群(DBA寶典)、新增小麥苗weixin, 學習最實用的資料庫技術。
........................................................................................................................ |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2639269/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何檢視ORACLE的LOB(BLOB和CLOB)物件佔用的大小Oracle物件
- PHP 資料型別之檢視和判斷資料型別PHP資料型別
- JDBC 處理CLob和Blob型別資料JDBC型別
- MySQL 中 blob 和 text 資料型別詳解MySql資料型別
- Oracle blob型別資料轉換成 base64編碼Oracle型別
- Oracle普通檢視和物化檢視的區別Oracle
- C++檢視資料型別C++資料型別
- PHP 操作 mysql blob 資料型別的欄位PHPMySql資料型別
- Java檢視變數資料型別Java變數資料型別
- Oracle 資料型別Oracle資料型別
- Oracle和sqlserver資料型別對應OracleSQLServer資料型別
- JS專題之資料型別和型別檢測JS資料型別
- Oracle的number資料型別Oracle資料型別
- 【轉】ORACLE資料型別Oracle資料型別
- Oracle anydata資料型別Oracle資料型別
- ORACLE NUMBER資料型別Oracle資料型別
- Oracle資料型別對應Java型別Oracle資料型別Java
- Mysql BLOB、BLOB與TEXT區別及效能影響、將BLOB型別轉換成VARCHAR型別MySql型別
- a標籤與Blob下載檔案的區別和獲取檔案下載進度
- 如何在 Linux 中檢視已掛載的檔案系統型別Linux型別
- 1-庫表檢視及常用資料型別資料型別
- 如何檢視型別為LRAW的SAP ABAP資料庫表欄位的內容型別資料庫
- Oracle OCP(19):資料型別Oracle資料型別
- 如何檢視和分析Excel表格資料Excel
- js資料型別之基本資料型別和引用資料型別JS資料型別
- 關於Oracle的BLOB和CLOBOracle
- js檢測資料型別JS資料型別
- javascript 資料型別檢測JavaScript資料型別
- Oracle資料庫連結(DBLink)中如何訪問包含BLOB欄位的資料Oracle資料庫
- Oracle相關資料字典檢視Oracle
- JavaScript的資料型別及其檢測JavaScript資料型別
- 區別值型別資料和引用型別資料型別
- Oracle字串資料型別簡述Oracle字串資料型別
- 檢視oracle資料庫的連線數以及使用者檢視Oracle資料庫
- 檢視系統型別的命令型別
- 檢視系統的SHELL型別型別
- 檢視oracle資料庫真實大小Oracle資料庫
- JAVA中基本資料型別和引用資料型別Java資料型別