用于在目录中执行.sql脚本的批处理脚本
我们有一个目录,其中包含一个接一个地执行的.sql脚本,具体取决于编号:例如文件名为1.abc.sql、2.ter.sql、3.wty.sql等等 我想开发一个批处理脚本,它将驻留在sql脚本目录中,并要求执行脚本编号,输入类似“'1'或'2'或'3'或'10'”。根据收到的输入,脚本执行应从该编号的脚本开始,直到目录中.sql脚本的结尾 例如,如果接收到“1”作为输入,则脚本执行应从1.abc.sql开始,如果接收到“2”,则脚本执行应从2.ter.sql开始,直到目录中所有脚本的结尾,并将每个脚本的日志记录到文件名_sqloutput.txt 条件是:如果任何脚本给出任何错误消息,如列名不正确或表名不正确等,则脚本执行应立即停止,不应执行其他脚本 我尝试使用以下代码: 需要你的帮助用于在目录中执行.sql脚本的批处理脚本,sql,batch-file,Sql,Batch File,我们有一个目录,其中包含一个接一个地执行的.sql脚本,具体取决于编号:例如文件名为1.abc.sql、2.ter.sql、3.wty.sql等等 我想开发一个批处理脚本,它将驻留在sql脚本目录中,并要求执行脚本编号,输入类似“'1'或'2'或'3'或'10'”。根据收到的输入,脚本执行应从该编号的脚本开始,直到目录中.sql脚本的结尾 例如,如果接收到“1”作为输入,则脚本执行应从1.abc.sql开始,如果接收到“2”,则脚本执行应从2.ter.sql开始,直到目录中所有脚本的结尾,并将每
@echo off
SETLOCAL EnableExtensions EnableDelayedExpansion
for /f %%a IN ('dir /b *.sql') do (
call sqlcmd -S AMRVSP000000318 -i %%a -o"%%~na_sqloutput.txt"
findstr "Msg" "%%~na_sqloutput.txt" 2>NUL
if !errorlevel! EQU 0 (
echo Error occured in script %%a
echo Please check the %%~na_sqloutput.txt for detailed error logs
pause
exit /B
) else (
echo Successfully executed script %%a
)
)
pause
使用
SET/P
命令获取用户输入。是否所有脚本名称都以数字开头,然后是句点?基本上是验证它们是否以相同的格式一致命名。数字之间是否存在差距?4.abc.sql,然后是6.xyz.sql。会有丢失的号码吗?不会有任何丢失的号码。它将从1编号到目录中最后一个编号的脚本