これはSQLDeveloperでは不可能だと思います(ただし、あまり頻繁には使用しません)。
私が使用しているSQLクライアント(SQL Workbench / J)はこれを実行できます。
このデータをエクスポートする方法はいくつかあります。
独自のスクリプトを生成する
次のような特別な(ツール固有の)表記を使用して外部ファイルを参照するSQLスクリプトを作成できます。
INSERT INTO images
(name, data)
VALUES
('foobar', {$blobfile='blob_r1_c2.data'});
上記のステートメントは、SQLWorkbenchでのみ再度実行できます。他のSQLクライアントとは互換性がありません。
utl_rawを使用
もう1つの方法は、「blobリテラル」を使用することですが、Oracleでは文字リテラルの4000バイトに制限があるため、これは本当にの場合にのみ機能します。 小さなblob値:
INSERT INTO images
(name, data)
VALUES
('foobar', to_blob(utl_raw.cast_to_raw('......')));
ここで、cast_to_raw
の文字リテラル 呼び出しには、BLOBの16進値が含まれます。これには「blobbyte」ごとに2文字が必要なため、2000バイトを超えるBLOBを処理することはできません。ただし、その構文は、ほぼすべてのOracle SQLツールで機能します(非常に長い行のスクリプトを処理できる場合)。
SQL*Loader入力ファイル
3番目の方法は、SQL*Loaderを使用してインポートできるテキストファイルにデータをエクスポートすることです。
テキストファイルには次のようなものが含まれます:
NAME DATA foobar blob_r1_c2.data
次のSQL*Loader制御ファイルと一緒に:
OPTIONS (skip=1) LOAD DATA CHARACTERSET 'WE8ISO8859P15' INFILE 'images.txt' APPEND INTO TABLE IMAGES FIELDS TERMINATED BY '\t' TRAILING NULLCOLS ( NAME, lob_file_data FILLER, DATA LOBFILE(lob_file_data) TERMINATED BY EOF )>
これはSQL*Loaderを使用してロードできるため、データをインポートするためにSQLWorkbenchは必要ありません。
詳細はマニュアルにあります
編集
Alexがコメントで指摘しているように、DataPumpエクスポートを使用することもできますが、そのためにはサーバー上のファイルシステムにアクセスできる必要があります。上記のソリューションはすべて、データをクライアントに保存します。