欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

bat+sqlcmd批量运行脚本

程序员文章站 2022-05-03 20:58:13
...

Hello,此BAT脚本可以帮助开发人员将某文件夹下所有SQL脚本按文件名依次在指定数据库中批量执行。不用忍受powershell invoke-sqlcmd 的笨重,在指运行时多一种选择。 bat文件 @echo off@REM ******** ******** General Batch for Starting SQL ******** *****

Hello,此BAT脚本可以帮助开发人员将某文件夹下所有SQL脚本按文件名依次在指定数据库中批量执行。不用忍受powershell invoke-sqlcmd 的笨重,在指运行时多一种选择。

bat文件

@echo off
@REM ******** ******** General Batch for Starting SQL ******** ******** 
@REM %1 is the name of SQL script file
@rem SET SQL_NAME=%1
@SET SQL_NAME=%1
@SHIFT /1
@REM SHIFT /1
@REM P1... is parameters of SQLCMD,P1=%1...
@rem c for count
@set /a c=0

@rem ******** ******** parameters for sql server login ******** ********  
@set svrName=SERVERNAME\INSTANCENAME
@set uname=your_name
@set upwd=your_password
@set db=YOURDBNAME

@set s= %1 %2 %3 %4 %5 %6 %7 %8 %9
@FOR %%A IN (%s%) DO @set /a c=c+1
@if %c% gtr 9  goto s9
@if %c%==8  goto s8
@if %c%==7  goto s7
@if %c%==6  goto s6
@if %c%==5  goto s5
@if %c%==4  goto s4
@if %c%==3  goto s3
@if %c%==2  goto s2
@if %c%==1  goto s1
@if %c%==0  goto s0 
:s9
@sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1 P2=%2  p3=%3 p4=%4 p5=%5 p6=%6 p=%7 p8=%8 p9=%9 
@goto end
:s8
@sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1 P2=%2  p3=%3 p4=%4 p5=%5 p6=%6 p=%7 p8=%8  
@goto end
:s7
@sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1 P2=%2  p3=%3 p4=%4 p5=%5 p6=%6 p=%7  
@goto end
:s6
@sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1 P2=%2  p3=%3 p4=%4 p5=%5 p6=%6  
@goto end
:s5
@sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1 P2=%2  p3=%3 p4=%4 p5=%5  
@goto end
:s4
@sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1 P2=%2  p3=%3 p4=%4  
@goto end
:s3
@sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1 P2=%2  p3=%3 
@goto end
:s2
@sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1 P2=%2  
@goto end
:s1
@sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% -l60 -v P1=%1 
@goto end
:s0
@sqlcmd -S%svrName% -U%uname% -P%upwd% -d%db% -i%SQL_NAME% 
@goto end
:end 
@echo off
@set svrName=
@set uname=
@set upwd=
@set db=
@exit /b 0 
调用方法

bat+sqlcmd批量运行脚本

test.sql

set nocount on
go
select '$(p1)' as p1 ,'$(p2)' as p2

批量调用

d:test 目录下有多个 sql文件,批量运行。

bat+sqlcmd批量运行脚本

运行

bat+sqlcmd批量运行脚本