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對BLOB型別資料的操作與效能問題(轉載)Oracle型別
- PHP 資料型別之檢視和判斷資料型別PHP資料型別
- 檔案插入 Oracle資料庫 Blob型別Oracle資料庫型別
- JDBC 處理CLob和Blob型別資料JDBC型別
- 如何檢視ORACLE的LOB(BLOB和CLOB)物件佔用的大小Oracle物件
- SQL Server資料型別BLOBSQLServer資料型別
- MySQL 中 blob 和 text 資料型別詳解MySql資料型別
- C++檢視資料型別C++資料型別
- Java檢視變數資料型別Java變數資料型別
- PHP 操作 mysql blob 資料型別的欄位PHPMySql資料型別
- 【轉載】Oracle資料字典檢視Oracle
- Oracle blob型別資料轉換成 base64編碼Oracle型別
- Oracle普通檢視和物化檢視的區別Oracle
- 小工具檢視MYSQL資料檔案塊和型別MySql型別
- Oracle 資料字典和資料字典檢視Oracle
- JS專題之資料型別和型別檢測JS資料型別
- mysql BLOB型別 TEXT型別MySql型別
- 如何檢視windows下的Oracle程式WindowsOracle
- oracle下,要更改資料型別時的限制Oracle資料型別
- Oracle插入Blob資料的方法Oracle
- 轉載:Oracle常用的資料庫欄位型別Oracle資料庫型別
- 1-庫表檢視及常用資料型別資料型別
- 檢視錶中複合資料型別內容資料型別
- Mysql BLOB、BLOB與TEXT區別及效能影響、將BLOB型別轉換成VARCHAR型別MySql型別
- 如何檢視型別為LRAW的SAP ABAP資料庫表欄位的內容型別資料庫
- Oracle 中LONG RAW BLOB CLOB型別介紹Oracle型別
- 如何驗證Oracle資料庫中表的型別Oracle資料庫型別
- Oracle和sqlserver資料型別對應OracleSQLServer資料型別
- 操作Blob型別的方法(zt)型別
- Oracle資料型別Oracle資料型別
- Oracle 資料型別Oracle資料型別
- 如何檢視和分析Excel表格資料Excel
- 物料型別檢視型別
- Oracle的number資料型別Oracle資料型別
- Oracle的raw資料型別Oracle資料型別
- ORACLE的資料型別(轉)Oracle資料型別
- 強資料型別和弱資料型別資料型別
- 《卸甲筆記》-PostgreSQL和Oracle的資料型別的對比系列四:大資料型別筆記SQLOracle資料型別大資料