バッチファイルからSQLPlusを起動しデータ取得を行います。
主にエビデンス取得で利用します。
テスト対象の実施前後で取得し、結果ファイルを比較します。
-
起動バッチ
@echo off set DATE_TIME=%date:~0, 4%%date:~5, 2%%date:~2, 2%%time:~0, 2%%time:~3, 2%%time:~6, 2% set IP_ADDRESS=192.168.XX.XX set PORT_NO=1521 set SID=XXX set USER_ID=XXX set PASSWORD=XXX set SQL_FILE=outputCsvAllData.sql set SPOOL_FILE=select_AllData.csv rem -s サイレントモード rem プロンプトやログインメッセージを表示しなくなる。 rem -L 1度だけログイン rem ログインに失敗すると3回まで再試行するが、1回で終了する。 sqlplus -s -L %USER_ID%/%PASSWORD%@%IP_ADDRESS%:%PORT_NO%/%SID% @%SQL_FILE% move %SPOOL_FILE% %DATE_TIME%_%SPOOL_FILE% echo %DATE_TIME%_%SPOOL_FILE%を出力しました。 pause
-
SQLファイル(outputCsvAllData.sql)
set echo off set linesize 9999 set pagesize 0 set trimspool on set feedback off spool select_AllData.csv @@select_AllData.sql spool off
「@@」はパス名を含まないファイル名の場合、「呼び出し元のスクリプトのパス」を補完する。
例) 以下のフォルダ構成の場合、 「@@」をつけると呼び出せるが、「@」の場合、エラーとなる。 ・C:/起動バッチ ・C:/test/outputCsvAllData.sql ・C:/test/select_AllData.sql
prompt テーブル名 SELECT 項目1 || 't' || 項目2 || 't' || 項目3 FROM テーブル名;
文字列結合している理由は「【Oracle】SQLPlusで空白除去」を参照。