📌
SQLserverにクエリを一括で流すbatch
バッチと同じ階層のフォルダの中にあるクエリを全て実行するバッチです。
配置
C:.
│ runquery.bat
│
├─folder1
│ query1.sql
│ query2.sql
│
└─folder2
query3.sql
query4.sql
バッチ
runquery.bat
@echo off
cd /d %~dp0
SET USERID=(ユーザー名)
SET PASSWD=(パスワード)
SET HOSTNAME=(サーバー名またはIP)
SET DATABASE=(データベース名)
setlocal enabledelayedexpansion
echo *---------------------------------*
echo DBユーザー :%USERID%
echo DBユーザーパスワード :%PASSWD%
echo サーバー名 :%HOSTNAME%
echo データベース名 :%DATABASE%
echo *---------------------------------*
echo.
set /P USR_INPUT_STR="処理を行います。よろしいですか?(Y/N)"
if /i %USR_INPUT_STR% neq y goto cancel
for /d %%i in (*) do (
pushd .
cd %%i
echo %%i
for %%j in (*.sql) do (
echo %%j
echo %%i_%%j >> ../Logfile_%HOSTNAME%_%DATABASE%.txt
sqlcmd -S %HOSTNAME% -d %DATABASE% -U %USERID% -P %PASSWD% -i "%%j" >> ../Logfile_%HOSTNAME%_%DATABASE%.txt
)
popd
)
pause
:cancel
echo.
echo.
echo 処理を中断しました。
goto :end
pause
注意
Shift JISで保存してください。実行したときに文字化けしてしまいます。
VS Codeで見るときは右下のUTF8をクリックすると上部にSelect Actionが出てきます。
そこでReopen with Encoding>Japanese(Shift JIS)をクリックします。
ログは全然工夫していないので、SQLServerManagementStudioで実行したときの結果がそのまま表示されます。あくまで実行結果を見てわかる前提なので、SQLがよくわからない人が自動でクエリを実行する用途では作っていません。
Discussion