Windowsバッチでsqlplusの取得結果をCSVファイルに出力する方法


ここでは、WindowsバッチでORACLEのsqlplusを起動し、SQLを実行して取得したデータをCSVファイルに出力する方法を紹介します。

Windowsバッチは、テキストファイルの拡張子をbatに変更することで作成できます。

sqlplusを呼び出したい場合は、Windowsバッチの中で「sqlplus ユーザ名/パスワード@接続文字列」と書きます。

sqlplusの後ろに-sとオプションを付けることで、サイレントモードで実行できます。サイレントモードでは、コマンドプロンプトやメッセージなどが表示されなくなります。バッチ処理を実行するときはこのモードで良いと思います。

-sの後ろには、「@SQLファイル名」を指定することで、sqlplusでDBへログインし、指定したSQLファイルの中のSQLを実行します。

SQLファイルでは、SPOOLコマンドを使用します。
このとき、trimspool onとすることで、行の後ろに入る無駄な空白が削除されます。

WindowsバッチからSQLを実行しCSV出力する

Windowsバッチのサンプルを書いてみました。

「test.bat」というWindowsバッチファイルで、バッチを実行すると、「select.sql」というSQLファイルを実行します。「select.sql」には、Table1を全件取得し、CSVに出力するコマンドを書いています。

◆test.bat
 「sqlplus -s username/password@db1 @select.sql」でsqlplusの起動と共に、「select.sql」ファイルを実行しています。

@echo off
sqlplus -s username/password@db1 @select.sql

◆select.sql
 「select * from table1;」で取得したレコードをSPOOLでCSVファイルに出力しています。

set pagesize 0 linesize 10000 feedback off trimspool on
spool C:\test\log.csv
select * from table1;
spool offexit

まとま

WindowsバッチでsqlplusからSQLを実行するときは、sqlplusコマンドの実行と共に、@SQLファイル名を指定することで、SQLを実行できます。

CSV出力するためには、SPOOLコマンドを使います。

主なSQLの書き方や使い方については、↓で詳しく解説していますのでぜひ参考にしてください。
 ・データの検索:【SQL】SELECT文の書き方:サンプル多数あり
 ・データの追加:【SQL】INSERT文の書き方:サンプル多数あり
 ・データの更新:【SQL】UPDATE文の書き方:サンプル多数あり
 ・データの削除:【SQL】DELETE文の書き方:サンプル多数あり