画面に出力される結果をファイルにも出力させるには、SQL*PlusのSPOOL(短縮形はSPO)コマンドを使用する。
SQL*Plusの出力結果をファイルに出力する。
SPOOL filename[.ext] [CREATE|REPLACE|APPEND]
出力するファイル名を拡張子を除いて指定する。
出力するファイル名の拡張子を指定する。ファイル名の拡張子の指定を省略した場合は「.lst」という拡張子が自動的に付けられる。
ファイルの出力先はカレントディレクトリとなる。
任意のディレクトリを出力先とするには、出力先ファイルを絶対パスで指定する。
SPOOL C:\Users\tsuka\example.txt
SPOOLコマンドには次のオプションを指定できる。
CREATE(短縮形はCRE)オプションを指定すると、ファイルが新規作成される。同名のファイルが既に存在する場合は、SPOOLコマンドが失敗する。
REPLACE(短縮形はREP)オプションを指定すると、ファイルが上書きされる。同名のファイルが既に存在する場合は、内容が上書きされる。SPOOLコマンドのデフォルト値である。
APPEND(短縮形はAPP)オプションを指定すると、ファイルに追加される。同名のファイルが既に存在していた場合は、既存ファイルの末尾に追加される。
Oracle SQL*Plusの出力結果を既存のファイルに追記するには、SPOOLコマンドにAPPENDオプションを指定して実行する。
SPOOL example APPEND
SQL*Plusの出力結果をファイルに出力するのを止める。
SPOOL OFF
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