ここでは、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文の書き方:サンプル多数あり