教你快速掌握Oracle資料庫中的bfile

2021-05-23 23:31:35 字數 1814 閱讀 4232

具體步驟如下:

1.先在oracle資料庫中下面我們建立乙個目錄別名,用於將檔案定位指標對映到檔案系統:

create directory 'tmpdir' as '/tmp';

tmpdir表示邏輯目錄名,'/tmp'是實際目錄。 注意該目錄oracle應該有讀許可權 然後根據需要授權。

grant read on directory bfile_dir1 to scott; 

建立乙個含有bfile欄位的表

create table bfiletest(id number(3), fname bfile);

建立乙個含有blob欄位的表

create table blobtest(id number(3),ablob blob);

2.插入資料

這裡需要使用bfilename來進行bfile欄位的insert 或者 update操作

insert into bfiletest 

values (1, bfilename ('tmpdir', 'tmptest'));

bfilename的引數1是directory名,引數2是檔名。注意:這一行中插入的是

乙個指向/tmp/tmptest的檔案定位指標對映,不是檔案本身。

3.讀取bfile

通過使用dbms_lob包進行可以對bfile讀入到blob/clob物件中操作(唯讀)

create or replace procedure loadlobfrombfile_proc(

tid in number,rfilename in varchar2,rfiledir

in varchar2,upmessage out varchar2)

as dest_loc blob;

src_loc bfile;

begin

insert into blobtest(id,ablob)

values(tid,empty_blob()) return ablob into dest_loc;

src_loc := bfilename(rfiledir,rfilename);

/* 如果bfile檔案實際存在 */

if (dbms_lob.fileexists(src_loc) != 0)

then

/* 開啟bfile原始檔 */

dbms_lob.open(src_loc, dbms_lob.lob_readonly);

/* 開啟目標blob: */

dbms_lob.open(dest_loc, dbms_lob.lob_readwrite);

/*從檔案中裝入 */

dbms_lob.loadfromfile(dest_loc,

src_loc,dbms_lob.getlength(src_loc));

/* 記得關閉: */

dbms_lob.close(dest_loc);

dbms_lob.close(src_loc);

commit;

upmessage := '0';

end if;

exception

when others then

rollback;

upmessage := '操作失敗';

end;

(注釋:bfile欄位實際的檔案儲存在檔案系統中,欄位中儲存的是檔案定位指標.bfile對oracle來說是唯讀的,也不參與事務性控制和資料恢復)。

教你快速掌握VIM

說到vim,會跟vi混淆在一起,其實vim可以理 解為vi的高階版本。vim是linux系統下最好的文字編輯器。vim是一種模式化的編輯器,分為以下4種模式 1.開啟檔案 vim 檔名2.移動游標 3.編輯檔案 輸入字母i 輸入字母a 輸入字母x 輸入字母r 輸入字母o 輸入字母o 輸入字母u 輸入...

快速掌握重啟Oracle資料庫的操作步驟

1.停應用層的各種程式 2.停oralce的監聽程序 lsnrctl stop 3.在獨佔的系統使用者下,備份控制檔案 sqlplus as sysdba sql alter database backup controlfile to trace 4.在獨佔的系統使用者下,手工切換重作日誌檔案,確...

資料庫 快速掌握雲資料庫MySQL版

mysql 是全球最受歡迎的開源資料庫,作為開源軟體組合 lamp linux apache mysql perl php python 中的重要一環,廣泛應用於各類應用場景。本課程主要介紹雲資料庫 mysql 版的使用 資料遷移 備份恢復 效能優化等方法,幫助學員掌握雲資料庫mysql版的基本使用...