例えばこんなSelect文を実行したとします。
SQL> select username,PROGRAM,STATE,OSUSER from v$session where type='USER';
USERNAME PROGRAM
------------------------------ ------------------------------------------------
STATE OSUSER
------------------- ------------------------------
DBSNMP JDBC Thin Client
WAITING oracle
DBSNMP JDBC Thin Client
WAITING oracle
SYS oraagent.bin@testdb01 (TNS V1-V3)
WAITING oracle
USERNAME PROGRAM
------------------------------ ------------------------------------------------
STATE OSUSER
------------------- ------------------------------
SYS oraagent.bin@testdb01 (TNS V1-V3)
WAITING oracle
TEST sqlplus@testdb01 (TNS V1-V3)
WAITED SHORT TIME oracle
DBSNMP JDBC Thin Client
WAITING oracle
6行が選択されました。
このままでは見にくいので、column <カラム名> format やら、set line やらで見やすく整えます。
SQL> col OSUSER for a10
SQL> col USERNAME for a10
SQL> set line 100
SQL> /
USERNAME PROGRAM STATE OSUSER
---------- ------------------------------------------------ ------------------- ----------
DBSNMP JDBC Thin Client WAITING oracle
oracle@testdb01 (J001) WAITING oracle
DBSNMP JDBC Thin Client WAITING oracle
SYS oraagent.bin@testdb01 (TNS V1-V3) WAITING oracle
SYS oraagent.bin@testdb01 (TNS V1-V3) WAITING oracle
TEST sqlplus@testdb01 (TNS V1-V3) WAITED SHORT TIME oracle
oracle@testdb01 (J000) WAITING oracle
DBSNMP JDBC Thin Client WAITING oracle
8行が選択されました。
と言っても、カラム数が多いと面倒だし、select * from みたいな文だとこの方法では対処しきれないですよね。
そういう時に便利な小技です。
Oracle 8i 以降であれば、SE,EE、プラットフォーム無関係で使用できます。
やり方は以下の通りです。
SQL> set markup html on
SQL> spool /work/test.xls
<br>
SQL> select * from v$session where type='USER';
<br>
<p>
<table border='1' width='90%' align='center' summary='Script output'>
<tr>
<th scope="col">
SADDR
</th>
<th scope="col">
SID
</th>
<th scope="col">
SERIAL#
</th>
(略)
</td>
<td align="right">
0
</td>
<td>
</td>
</tr>
</table>
<p>
6行が選択されました。<br>
<br>
見ての通り、html モードで出力している訳ですが、なぜ拡張子が.xls かと言うと、そのままExcelの表として開けるからです。
実際にやってみると警告が表示されますが、
構わずに開きます。
ちゃんとExcelの表になっています。
ももちろんsqlplusからExcel形式で出力される訳ではなく、中身はあくまでhtmlファイルなので、保存時に形式を.html から .xls に変更します。
変更しておかないと開くたびに先ほどの警告が表示されて鬱陶しいので変更しておきましょう。
ちなみにsqlplusからの出力時に.xlsx を指定すると開けなくなりますが、中身はあくまでhtmlファイルなので、拡張子を変更して開けばOKです。
保存時には.xls,.xlsxどちらでも構いません。