公開日:10/27/2020 更新日:3/26/2022
本記事では、大量のSQLファイルを一括実行可能なバッチスクリプトを作成した際の備忘録を残します。
OracleのDB用のCUIクライアントツール である SQL*Plus がインストール済み。
sqlplus コマンドが既に使える状態を想定。
ディレクトリ指定でSQLファイルを一括実行するスクリプトは以下になります。
@echo off
rem 実行対象のSQLファイルが格納されたフォルダの絶対パス
set DIR=C:\sample\*
rem ログ出力先
set LOG_DIR=%~dp0\log
set LOG_FILENAME=log.txt
rem ログ出力先の作成
If not exit %LOG_DIR% mkdir %LOG_DIR%
rem DB接続情報を設定
set DB_CONN=username/password@localhost:1521/XEPDB1
rem 指定ファイルを実行
for %%a in (%DIR%) do(
echo %%~faを実行 >> %LOG_DIR%\%LOG_FILENAME%
rem 拡張子取得
set ex=%%~xa
if /i ex == sql (
rem 指定ファイルがSQLファイルの場合
echo exit | sqlplus %DB_CONN% @%%a >> %LOG_DIR%\%LOG_FILENAME% 2>&1
) else(
rem 指定ファイルがSQLファイル以外の場合
for /f %%i in (%%a) do (
echo %%~fiを実行 >> %LOG_DIR%\%LOG_FILENAME%
echo exit | sqlplus %DB_CONN% @%%i >> %LOG_DIR%\%LOG_FILENAME% 2>&1
)
)
)
exit /b
ポイント