13

Oracle SQL Developer を使用しており、テーブルを CSV ファイルにエクスポートしようとしています。一部のフィールドは CLOB フィールドであり、多くの場合、エクスポート時にエントリが切り捨てられます。私の最終目標はここでOracleを使用しないことであるため、すべてを取得する方法を探しています(Oracleダンプを受け取りました-これはOracle dbにロードされましたが、データを別の形式で使用しているため、経由します仲介者としてのCSV)。

これに複数の解決策がある場合、それが私にとって1回限りの手順であることを考えると、より複雑な「正しく行う」解決策に対するよりハック的なタイプの解決策は気にしません。

4

5 に答える 5

16

データベース ボックスのファイル システムにアクセスできる場合は、次のようなことができます。

CREATE OR REPLACE DIRECTORY documents AS 'C:\';
SET SERVEROUTPUT ON
DECLARE
  l_file    UTL_FILE.FILE_TYPE;
  l_clob    CLOB;
  l_buffer  VARCHAR2(32767);
  l_amount  BINARY_INTEGER := 32767;
  l_pos     INTEGER := 1;
BEGIN
  SELECT col1
  INTO   l_clob
  FROM   tab1
  WHERE  rownum = 1;

  l_file := UTL_FILE.fopen('DOCUMENTS', 'Sample2.txt', 'w', 32767);

  LOOP
    DBMS_LOB.read (l_clob, l_amount, l_pos, l_buffer);
    UTL_FILE.put(l_file, l_buffer);
    l_pos := l_pos + l_amount;
  END LOOP;
EXCEPTION
  WHEN OTHERS THEN
    DBMS_OUTPUT.put_line(SQLERRM);
    UTL_FILE.fclose(l_file);
END;
/

このサイトからコピーして貼り付けたもの。

UTL_FILE に関するこの前の質問も役立つ場合があります。CSV へのエクスポートに対応しています。ただし、UTL_FILE が CLOB をどのように処理するかについては、私にはわかりませんし、経験もありません。

于 2009-09-16T17:53:04.540 に答える
0

これを実行する短いが一般的な python スクリプトを次に示します - テーブル (その他の CLOB フィールドを含む) をフラットな csv ファイルにダンプします: OraDump

于 2009-11-05T09:37:11.423 に答える
0

Oracle ダンプによって (export または expdp からの) .dmp を意味すると仮定すると、バイナリ ファイルを見ています。ダンプファイルを Oracle データベースにインポートしてから、UTL_FILE またはその他の手段を使用してデータをプレーン テキストにエクスポートする必要があります。

于 2009-09-16T18:00:39.817 に答える