SQL*Plusでデータをcsvに出力する方法

この記事ではSQL*Plusでデータをcsvに出力する方法について解説します。

 SQL*Plusでデータをcsvに出力する

DBでselectした結果をcsv形式で保存したい場合があるかと思います。

csvに出力する方法はいくつかありますが、SQL*Plusを使用して行ってみます。


 サイレントモードでSQL*Plusに接続

まずはSQL*Plusにサイレントモードで接続します。

サイレントモードは起動時のメッセージ、コマンドプロンプトなどの余計な文字を表示しないモードになります。

下記の通りSQL*Plusに接続し、SQLを実行するユーザでconnectします。

sqlplus -s /nolog
conn test/password@xepdb1


 システム変数の設定

同様に余計な情報がcsvに出力されないようにシステム変数を設定します。

set feedback off
set heading off

さらにcsv形式で結果表示するためのシステム変数を設定します。

set markup csv on


 csvへの書き出し

spoolでcsvファイルに書き出します。

spool C:\Users\XXXXX\test.csv

SQLを実行し、spoolを終了します。

select * from emp1;
1,"Suzuki","Manager"
2,"Suzuki","Manager"
3,"Suzuki","Manager"
4,"Suzuki","Manager"
5,"Suzuki","Manager"
6,"Suzuki","Manager"
7,"Suzuki","Manager"
8,"Suzuki","Manager"
9,"Suzuki","Manager"
10,"Suzuki","Manager"
spool off

以上でデータをcsvファイルに出力が完了になります。

サイレントモードでも通常通り「exit」でSQL*Plusを終了できます。


 コマンドまとめ

コマンドをまとめると以下のようになります。

ユーザ情報、csvファイル名、SQL文を置き換えて使用できます。

sqlplus -s /nolog
conn test/password@xepdb1
set echo off
set feedback off set heading off
set markup csv on spool C:\Users\XXXXX\test.csv select * from emp1; spool off exit