データベースで管理およびバックアップする必要のあるさまざまなJPG、PNG、GIF、およびBMP画像ファイルがあり、データベースへの初期ロードを実行する方法が必要です。
バイナリLOBのロードは、テキストベースのLOBのロードよりも少し簡単です。
画像テーブルの一意の識別子とテーブル自体のシーケンスを作成します:
シーケンスimg_seq;
を作成します
テーブルイメージを作成します
(
img_num番号、
img_nm varchar2(100)、
img_blb blob、
ins_tsタイムスタンプ
);
次に、匿名ブロックを実行して、画像SCREENCAPTURE.BMPをデータベーステーブルにロードします。
宣言
src_blbbfile; /*ファイルシステム上のソースBLOBを指す*/
dst_blb blob; /*テーブル内の宛先BLOB*/
src_img_nm varchar2(100):='Screen Capture.bmp';
src_offset integer:=1; /*ソースBLOBのどこから開始するか*/
dst_offset integer:=1; /*ターゲットBLOBのどこから開始するか*/
begin
src_blb:=bfilename('LOB_SRC'、src_img_nm);
画像に挿入(img_num、img_nm、img_blb、ins_ts)
values(img_seq.nextval、src_img_nm、empty_blob()、systimestamp)
img_blbをdst_blbに返す;
dbms_lob.open(src_blb、dbms_lob.lob_readonly);
dbms_lob.loadblobfromfile
(
dest_lob => dst_blb、
src_bfile => src_blb、
amount => dbms_lob.lobmaxsize、
dest_offset => dst_offset、
src_offset => src_offset
);
dbms_lob.close(src_blb);
commit;
dbms_output.put_line('BLOBをテーブルに書き込みました:' || src_img_nm);
end;
このブロックを実行すると、画像がblobに読み込まれ、次のコマンドでレコードを確認できます。
画像からimg_num、img_nm、ins_ts、length(img_blb)を選択します;