Oracle資料庫中對BLOB資料的操作問題
【TechTarget中國原創】問:請問在Oracle資料庫中,如何插入並檢索二進位制大物件資料(BLOB)?
答:我建議在處理大物件資料之前,先閱讀一下“Oracle應用開發者指南”中的大物件部分。
下面給出的連結就是線上版本,其中14章給出了一些插入和讀取BLOB的例子:
14章
下面我通過一個具體的例項,來演示如何將外部檔案匯入一個BLOB列中:
第一步:建立一個目錄,指向BLOB的位置。將“blob_dir”替換成“/oradata/blobs”。
第二步:為使用該目錄的使用者提供可讀授權。
第三步:建立大物件表。
-- the storage table for the image file
CREATE TABLE my_blobs (
dname VARCHAR2(30), -- directory name
sname VARCHAR2(30), -- subdirectory name or description
fname VARCHAR2(30), -- file name
fblob BLOB); -- blob file
第四步:建立一個儲存過程,用來插入BLOB物件。
-- create the procedure to load the blob file
CREATE OR REPLACE PROCEDURE load_blob (
pdname VARCHAR2,
psname VARCHAR2,
pfname VARCHAR2) IS
src_file BFILE;
dst_file BLOB;
lgh_file BINARY_INTEGER;
BEGIN
src_file := bfilename('BLOB_DIR', pfname);
-- insert a NULL record to lock
INSERT INTO my_blobs
(dname, sname, fname, fblob)
VALUES
(pdname, psname, pfname, EMPTY_BLOB())
RETURNING fblob INTO dst_file;
-- lock record
SELECT fblob
INTO dst_file
FROM my_blobs
WHERE dname = pdname
AND sname = psname
AND fname = pfname
FOR UPDATE;
-- open the file
dbms_lob.fileopen(src_file, dbms_lob.file_readonly);
-- determine length
lgh_file := dbms_lob.getlength(src_file);
-- read the file
dbms_lob.loadfromfile(dst_file, src_file, lgh_file);
-- update the blob field
UPDATE my_blobs
SET fblob = dst_file
WHERE dname = pdname
AND sname = psname
AND fname = pfname;
-- close file
dbms_lob.fileclose(src_file);
END load_file;
/
第五步:執行儲存過程。
SQL> exec load_blob('BLOB_DIR','Head shot photo','km_pic.png');
PL/SQL procedure successfully completed.
你現在可以通過檢查大小,來驗證原始物件與資料庫物件的匹配。
第六步:從OS上檢查BLOB大小。
SQL> !ls -l /oradata/blobs/km_pic.png
-rwxr-xr-x 1 oracle oinstall 21150 Jan 6 01:55 /oradata/blobs/km_pic.png
第七步:從Oracle檢查BLOB大小。
1 declare
2 a blob;
3 begin
4 select fblob into a from my_blobs;
5 dbms_output.put_line(dbms_lob.getlength(a));
6* end;
SQL> /
21150
PL/SQL procedure successfully completed.
TechTarget中國原創內容,原文連結:http://www.searchdatabase.com.cn/showcontent_57526.htm
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17252115/viewspace-740824/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle對BLOB型別資料的操作與效能問題(轉載)Oracle型別
- 一個從事資料庫遷移的老手的的筆記之一(Oracle對BLOB型別資料的操作與效能問題)資料庫筆記Oracle型別
- Oracle資料庫連結(DBLink)中如何訪問包含BLOB欄位的資料Oracle資料庫
- sqlite操作--- oracle資料庫中的資料導進sqliteSQLiteOracle資料庫
- Oracle插入Blob資料的方法Oracle
- Oracle資料庫中的逐行處理問題NEOracle資料庫
- 用Asp實現對ORACLE資料庫的操作Oracle資料庫
- 檔案插入 Oracle資料庫 Blob型別Oracle資料庫型別
- 對 oracle 資料庫日期格式,以及對日期操作的理解Oracle資料庫
- Java mysql blob 資料讀寫操作JavaMySql
- Firedac 在資料表中插入BLOB資料的方法
- Lazarus中對mysql資料庫Blob型別進行讀寫例子MySql資料庫型別
- java語言操作Oracle資料庫中的CLOB資料型別 (轉)JavaOracle資料庫資料型別
- 怎樣使用castor 存取oracl資料庫中的blobAST資料庫
- Laravel5的資料庫表建立問題 資料庫遷移操作報錯問題解決Laravel資料庫
- Oracle和MySQL資料庫CTAS等操作對比OracleMySql資料庫
- 如何處理Oracle資料庫中的壞塊問題(轉)Oracle資料庫
- Oracle資料庫字符集問題Oracle資料庫
- Oracle資料庫10個小問題Oracle資料庫
- MySQL 資料庫的對庫的操作及其資料型別悔鋒MySql資料庫資料型別
- 水煮oracle29----oracle中對資料的批量操作測試Oracle
- c#資料操作:資料庫訪問 和 檔案操作C#資料庫
- asp.net查出 oracle資料庫中的中文亂碼問題ASP.NETOracle資料庫
- PHP 操作 mysql blob 資料型別的欄位PHPMySql資料型別
- Oracle資料庫中Insert、Update、Delete操作速度Oracle資料庫delete
- 資料操作通用框架問題框架
- Oracle資料庫字符集問題解析Oracle資料庫
- 診斷Oracle資料庫Hanging問題Oracle資料庫
- Oracle資料庫管理——表資料庫高水位及shrink操作Oracle資料庫
- 不同資料庫間傳遞資料的問題資料庫
- Oracle資料匯入到Hive資料庫的操作方法OracleHive資料庫
- 資料庫同步問題資料庫
- jboss訪問資料庫的問題資料庫
- 【oracle資料庫資料恢復】誤操作導致的資料庫誤刪除的資料恢復案例Oracle資料庫資料恢復
- 關於oracle資料庫訊號量的問題Oracle資料庫
- 近期處理的Oracle資料庫問題總結Oracle資料庫
- Oracle資料庫導致效能問題的可能原因Oracle資料庫
- spring 對資料庫的併發操作Spring資料庫