0

あるデータベースから別のデータベースにデータを移行する必要があります。準備として、CLOBデータとBLOBデータをOracleサーバー上にある別々のファイルに抽出しました。データベースには、これらすべての行に対してNULL値で初期化された異なるテーブル内のいくつかのCLOBおよびBLOB列が含まれています。

ファイルのコンテンツを既存の行のCLOBまたはBLOB列にロードするにはどうすればよいですか。プライマリIDキーとファイル名の正確な3つは知っていますが、これらのファイルをテーブルに読み込むための実用的な方法は見つかりませんでした。

たとえば、 SQLローダーは行を追加するか、テーブル全体を置き換えることしかできないようです。しかし、私は単一の列だけを更新したいと思います。必要に応じてSQLローダーを使用することも、プレーンなPL/SQLスクリプトを使用することもできます。

ご協力ありがとうございます。

4

1 に答える 1

1

次の行に沿った何かが仕事をするはずです。それをパラメータ化して、BLOB データ用に別のバージョンを作成する必要があります。文字セットの問題があるかどうかもわかりません。

declare
    l_bfile   bfile := bfilename('DATA_PUMP_DIR','cpy.log');
    l_data    clob;
    l_soffset NUMBER := 1;
    l_doffset NUMBER := 1;
    l_lang    NUMBER := 0;
    l_warn    NUMBER;
begin
    DBMS_LOB.createtemporary (lob_loc => l_data,cache => TRUE, 
                                 dur => DBMS_LOB.call);
    dbms_lob.fileopen( l_bfile, DBMS_LOB.file_readonly );
    DBMS_LOB.loadclobfromfile(l_data, l_bfile, DBMS_LOB.LOBMAXSIZE, 
           l_soffset, l_doffset, 0, l_lang, l_warn  );
    dbms_lob.fileclose(l_bfile);
    update f_lob set value = l_data where id = 1;
end;
/
于 2010-08-30T23:28:49.647 に答える