SQL*Plus SPOOL

SQL*Plus の入力コマンドや実行結果を画面に出力するだけでなくファイルにも出力させるには、SPOOL(短縮形はSPO)コマンドを使用する。これにより、SQL 操作のエビデンスを残すことができる。SPOOL とは「糸巻き車」の意味である。

構文

SQL*Plus の入力内容と出力結果をファイルに出力する。

SPOOL filename[.ext] [ CREATE | REPLACE | APPEND ]

SQL*Plus の入力内容と出力結果をファイルに出力しない。

SPOOL OFF

引数とオプション

以下に示す引数とオプションを SPOOL コマンドに指定できる。

filename
出力するファイル名を拡張子を除いて指定する。
SQL> spool sqlplus
ext
出力するファイル名の拡張子を指定する。ファイル名の拡張子の指定を省略した場合は「.lst」という拡張子が自動的に付けられる。
SQL> spool sqlplus.txt
CREATE
CREATE(短縮形はCRE)オプションを指定すると、ファイルが新規作成される。同名のファイルが既に存在する場合は、SPOOLコマンドが失敗する。
SQL> spool sqllog create

CREATE オプションの短縮形は CRE である。

SQL> spo sqlplus cre
REPLACE
REPLACE オプションを指定すると、ファイルが上書きされる。同名のファイルが既に存在する場合は、内容が上書きされる。SPOOLコマンドのデフォルト値である。
SQL> spool sqlplus replace

REPLACE オプションの短縮形は REP である。

SQL> spo sqlplus rep
APPEND
APPEND オプションを指定すると、ファイルに追記される。指定したファイルが存在しなければ、ファイルが新規作成される。指定したファイルが既に存在していれば、既存ファイルの末尾に追記される。
SQL> spool sqlplus append

APPEND オプションの短縮形は APP である。

SQL> spo sqlplus app
OFF
SQL*Plusの出力結果をファイルに出力するのを止める。
SQL> spool off

出力先

ファイルの出力先はカレントディレクトリとなる。

任意のディレクトリを出力先とするには、出力先ファイルを絶対パスで指定する。

SPOOL C:\Users\tsuka\example.txt

追記

Oracle SQL*Plusの出力結果を既存のファイルに追記するには、SPOOLコマンドにAPPENDオプションを指定して実行する。

SPOOL example APPEND

SPOOLコマンドの引数にファイル名を指定して実行すると、それ以降の出力がファイルに書き込まれます。なお、指定したファイル名に .lst という拡張子が自動的に付けられます。

SQL> spool sqllog

上記のコマンドを実行した後の出力は、画面に表示されると共に sqllog.lst というファイルにも書き込まれます。

SPOOLコマンドの引数に OFF を指定して実行すると、出力結果のファイルへの書き込みを終了します。

SQL> spool off

現在のスプール状態を確認するには、SHOW SPOOLコマンドを実行します。

SQL> show spool
spool OFF
SQL>

日付

出力先のファイル名に日付を含めるには、事前定義済変数の_DATEを利用する。

SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYYMMDD_HH24MISS';
SQL> SPOOL example-&_DATE..log

改ページしない

SQL*Plus の実行結果を画面に出力する際には、見やすいように改ページされる。実行結果をファイルへ出力するときに改ページが不要であれば、SET コマンドで PAGESIZE を 0 に設定する。ページサイズをゼロに設定すると、ヘッダー、ページ・ブレーク、タイトル、初期空白行及びその他の書式設定情報をすべて非表示にできる。

SQL> set pagesize 0
SQL> spol sqlplus

問い合わせ結果のヘッダを表示しない

問い合わせ結果のヘッダを表示しないようにするには、SET コマンドで HEADING を OFF に設定する。

SQL> set heading off
SQL> spool sqlplus

確認メッセージを表示しない

SQLまたはPL/SQL文が正常に実行された後に表示される確認メッセージ(「表が作成されました。」、「PL/SQLプロシージャが正常に完了しました。」など)を非表示にするには、SET コマンドで FEEDBACK を OFF に設定する。

SQL> set feedback off
SQL> spool sqlplus

関連記事

COLUMN
列の表示属性を設定・表示する