Oracle Databaseに照会するときは、SPOOLを使用できます。 SQLclを使用するときに、クエリ結果をテキストファイルにエクスポートするコマンド。
例
テーブル全体をエクスポートする例を次に示します。
SPOOL '/Users/barney/data/regions.txt';
SELECT * FROM regions;
SPOOL off; 行ごとに次のようになりました:
- 最初の行は
SPOOLを使用しています 出力ファイルが書き込まれる場所を指定するコマンド。必ず/Users/barney/data/regions.txtを変更してください システム上の場所と適切なファイル名に移動します。 - 2行目で、SQLクエリを実行しました。これはエクスポートする結果です。この場合、
regions全体をエクスポートしました テーブル。 - 次に、
SPOOLに切り替えました オフ。
結果のファイルは次のようになります。
REGION_ID REGION_NAME _____________________________________1ヨーロッパ2アメリカ3アジア4中東およびアフリカ4行が選択されています。
私の場合、SQLFORMAT ansiconsoleに設定されました 、したがって、出力はそれを反映します。
これは、適切な形式に変更できます。
sql*loaderでインポートファイルとして使用できる形式で結果をエクスポートする例を次に示します。
SET SQLFORMAT loader
SPOOL '/Users/barney/data/regions_loader.txt';
SELECT * FROM regions;
SPOOL off;
SET SQLFORMAT ansiconsole 結果:
1|「ヨーロッパ」| 2|「南北アメリカ」| 3|「アジア」| 4|「中東およびアフリカ」|4行が選択されました。
この場合、SQLFORMATもリセットします ansiconsoleに戻る 一度SPOOL 操作が完了しました。
フィードバックを削除
X rows selected SET FEEDBACK offを使用 :
SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt';
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on 結果:
REGION_ID REGION_NAME _____________________________________1ヨーロッパ2南北アメリカ3アジア4中東およびアフリカ
この場合、私はFEEDBACKをオンにしました ファイルをエクスポートした後、元に戻します。
結果を追加
デフォルトでは、SPOOL REPLACEを使用します 、ファイルがすでに存在する場合はファイルを置き換えます。
ただし、APPENDは使用できます 結果をファイルに追加するための引数。
例:
SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt' APPEND;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on 結果のファイル:
REGION_ID REGION_NAME _____________________________________1ヨーロッパ2アメリカ3アジア4中東およびアフリカREGION_IDREGION_NAME_____________________________________1ヨーロッパ2アメリカ3アジア4中東およびアフリカこの例では、前の例で作成(および入力)されたファイルに結果を追加しました。その結果、結果がファイルに複製されました。
既存のファイルを上書きする
REPLACEを使用できます 既存のファイルを新しいクエリの結果で上書きするには:SET SQLFORMAT ansiconsole SET FEEDBACK off SPOOL '/Users/barney/data/regions_no_feedback.txt' REPLACE; SELECT * FROM regions; SPOOL off; SET FEEDBACK on結果のファイル:
REGION_ID REGION_NAME _____________________________________1ヨーロッパ2南北アメリカ3アジア4中東およびアフリカ前述のように、
REPLACEはデフォルト設定なので、この引数を完全に省略できたはずです。