この記事では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