ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
CLOBデータを読み出してファイルに出力する
スポンサード リンク

DBに登録されたCLOBデータを読み込む場合、DBMS_LOBパッケージを使用する。

例1) 表「clob01」の列「filedata」に格納されているCLOBデータをファイル「c:\temp\sample01.txt」に出力する。

(1)事前準備。テキストファイルの格納ディレクトリ「c:\temp」のディレクトリオブジェクト「LOB_DIR」を作成する
-- ディレクトリオブジェクトの作成
create directory LOB_DIR as 'c:\temp';
-- ディレクトリオブジェクトに読み込み権限をユーザ「test」に付与する。
grant read on directory LOB_DIR to test;
 
(2)表「clob01」にファイル「c:\temp\sample01.txt」に格納する。

declare

   v_clob_data clob;
  v_clob_buffer varchar2(32767);
  v_file_size integer;
  v_file_handle utl_file.file_type;
  v_start_point integer := 1;
  v_write_size integer := 32767;

begin

   -- CLOBデータ列「filedata」のロケータを「v_clob_data」に代入する
  select filedata into v_clob_data from clob01 where code = 'C01';

   -- 出力ファイル「sample01.txt」を"w"モードでオープンする
  v_file_handle := utl_file.fopen('LOB_DIR', 'sample01.txt', 'w');

   -- CLOBデータのサイズを取得する
  v_file_size := dbms_lob.getlength(v_clob_data);

   while v_start_point < v_file_size loop

     -- 最後の書込みの場合、書込みサイズを残りサイズに合わせる
    if v_start_point + v_write_size > v_file_size then
      v_write_size := v_file_size - v_start_point +1;
    end if;

     -- CLOBデータを先頭からCLOBデータサイズ読み込み、「v_clob_buffer」に代入
    dbms_lob.read(v_clob_data, v_write_size, v_start_point, v_clob_buffer);

     -- 「v_clob_buffer」に代入されたCLOBデータをファイル出力する
    utl_file.put(v_file_handle, v_clob_buffer);

     -- 書込み開始位置を進める
    v_start_point := v_start_point + v_write_size;

   end loop;

   -- 出力ファイル「sample01.txt」をクローズする。
  utl_file.fclose(v_file_handle);

end;


スポンサード リンク


BLOBデータの登録
BLOBデータの読み出してファイルに出力する
バイナリデータを圧縮する(COMPRESS.LZ_COMPRESS )
バイナリデータを解凍する(COMPRESS.LZ_UNCOMPRESS )
CLOBデータの登録
CLOBデータを読み出してファイルに出力する
ファイルサイズを取得する(DBMS_LOB.GETLENGTH)

PL/SQL へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ