sql >> データベース >  >> RDS >> Oracle

OracleのBLOB列への画像データのロード


    データベースで管理およびバックアップする必要のあるさまざまな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)を選択します;

    1. 絶対に避けるべき5つの非常に一般的なSQLクエリの設計ミス

    2. MySQLUPDATEとSELECTを1回のパスで

    3. pgAdmin IIIクエリ結果が短縮されるのはなぜですか?

    4. EntityFrameworkモデルを複数のデータベースにまたがらせる