SPOOLを使用してログを出力する方法
基本構文は、以下になります。
SPO[OL] [file_name[.ext] [CRE[ATE] | REP[LACE] | APP[END]] | OFF | OUT]
「SPOOL ファイル名」で問い合わせの結果を任意のファイル名に出力する設定をします。
「SPOOL OFF」で出力停止の設定をします。
SPOOL ログファイル名 <出力したい処理> SPOOL OFF
SPOOL使用例
今回は、「C:\Temp」配下のフォルダにSPOOLで取得した問い合わせ結果を出力してみます。
[file_name[.ext]には、任意のファイル名を指定します。
拡張子を指定しない場合は、「.LST」が自動で付与されます。
(私の環境では「.LST」になったけど、もしかしたら環境によって違うかもしれません\(^o^)/)
また、ファイル名の指定にパスを含めることによって任意のフォルダにファイルを作成することができます。
絶対パスでも相対パスでもどっちでもいけます。
C:\Temp>tree /f C:\Temp C:\TEMP └─Work
上記のフォルダ構成で検証していきます。
ファイル名のみの場合のSPOOL出力
C:\TEMPでSQL*PLUSにログインして以下のSQLを投げます。
SPOOL ファイル名 SELECT COUNT(*) FROM TEST_TABLE; SPOOL OFF
C:\TEMP配下に「ファイル名.LST」が作成できました。
拡張子が勝手にLSTで作成されてます。
パスも記載していないのでSQL*PLUSにログインしたときのディレクトリに作成されていますね。
C:\Temp>tree /f C:\Temp C:\TEMP │ ファイル名.LST │ └─Work
以下、作成された「ファイル名.LST」の中身
SQL> SELECT COUNT(*) FROM TEST_TABLE; COUNT(*) ---------- 0 SQL> SPOOL OFF
ファイル名+拡張子付きの場合のSPOOL出力
C:\TEMPでSQL*PLUSにログインして以下のSQLを投げます。
今回はファイル名を「ファイル名.CSV」にして拡張子をつけてみました。
SPOOL ファイル名.CSV SELECT COUNT(*) FROM TEST_TABLE; SPOOL OFF
C:\TEMP配下に「ファイル名.CSV」が作成できました。
拡張子を指定したので指定した拡張子になってますね。
今回もパスは記載していないのでSQL*PLUSにログインしたときのディレクトリに作成されています。
C:\Temp>tree /f C:\Temp C:\TEMP │ ファイル名.CSV │ ファイル名.LST │ └─Work
以下、作成された「ファイル名.LST」の中身です。
SQL> SELECT COUNT(*) FROM TEST_TABLE; COUNT(*) ---------- 0 SQL> SPOOL OFF
絶対パスでフォルダを指定してSPOOL出力
C:\TEMPでSQL*PLUSにログインして以下のSQLを投げます。
今回はパス+ファイル名を「ファイル名.TXT」にしてみました。
SPOOL C:\Temp\Work\ファイル名.TXT SELECT COUNT(*) FROM TEST_TABLE; SPOOL OFF
C:\TEMP\Work配下に「ファイル名.TXT」が作成できました。
パスを指定したので指定したフォルダに作成されていますね。
C:\Temp>tree /f C:\Temp C:\TEMP │ ファイル名.CSV │ ファイル名.LST │ └─Work ファイル名.TXT
以下、作成された「ファイル名.TXT」の中身です。
SQL> SELECT COUNT(*) FROM TEST_TABLE; COUNT(*) ---------- 0 SQL> SPOOL OFF
相対パスでフォルダを指定してSPOOL出力
C:\TEMPでSQL*PLUSにログインして以下のSQLを投げます。
今回はパス+ファイル名を「ファイル名.SQL」にしてみました。
SPOOL .\Work\ファイル名.SQL SELECT COUNT(*) FROM TEST_TABLE; SPOOL OFF
C:\TEMP\Work配下に「ファイル名.SQL」が作成できました。
パスを指定したので指定したフォルダに作成されていますね。
これで絶対パスでも相対パスでもどっちを指定しても大丈夫なことがわかると思います。
C:\Temp>tree /f C:\Temp C:\TEMP │ ファイル名.CSV │ ファイル名.LST │ └─Work ファイル名.SQL ファイル名.TXT
以下、作成された「ファイル名.SQL」の中身です。
SQL> SELECT COUNT(*) FROM TEST_TABLE; COUNT(*) ---------- 0 SQL> SPOOL OFF
パスの指定でSPOOL出力する際に注意すること
パスを指定した時に存在しないフォルダを指定したり、ファイルが作成できないフォルダを指定するとエラーが発生します\(^o^)/お気をつけて!
コメント