1.先要 xp_cmdshell 這個東東給開啟,開啟方法如下:
測試就這樣sp_configure 'show advanced options'
,1reconfigure
gosp_configure 'xp_cmdshell'
,1reconfigure
go
exec master.dbo.xp_cmdshell 'dir d:\'
2.我們做乙個分隔函式,如下:
測試 :alter
function [dbo].[f_split]
( @sourcesql
varchar(max),--字串
@strseprate
varchar(10)--分隔符
)returns
varchar(1000)
asbegin
declare
@iint
set@sourcesql=rtrim(ltrim(@sourcesql))
set@i=charindex(@strseprate,@sourcesql)
while
@i>=1
begin
set@sourcesql=substring(@sourcesql,@i+1,len(@sourcesql)-@i)
set@i=charindex(@strseprate,@sourcesql)
endreturn
@sourcesql
end
返回:sourcesql='2017-09-28 123.sql'
strseprate =' ' 是空格不是空
123.sql
3.create proc 來執行操作
測試:alter
procedure [dbo].[usp_batchimport]
( @returncode int=0
output, --返回錯誤數
@returnsucceed int=0
output, --成功執行檔案數量
@servername varchar(1000), --伺服器名稱
@database
varchar(500), --資料庫名稱
@uid varchar(50), --使用者名稱
@pwd varchar(50), --密碼
@filepath varchar(5000) --檔案路徑
)asbegin
declare @strsql varchar(2000)
set @strsql=' dir '+@filepath+'\*.sql'
--把讀到的檔名導到臨時表中
create
table #tmptb(filedes varchar(5000))
insert
into #tmptb
exec master.dbo.xp_cmdshell @strsql
--有木有錯誤
if(@@error<>0)
begin
set @returncode=1
return @returncode
end--把分隔後的檔名放在另外乙個表中,帶有.sql的檔案
select dbo.f_split(filedes,' ') as filedes
into #tmepuse from #tmptb where filedes like
'%.sql'
declare @strfilename varchar(2000)
declare @reexe int
--宣告乙個游標同時從#tmepuse中給游標賦值
declare fetfilename cursor
forselect filedes from #tmepuse
open fetfilename fetch
next
from fetfilename into @strfilename
while @@fetch_status=0
begin
--此句比較關鍵
set @strsql='osql -s '+@servername
+' -u '+@uid +' -p '+@pwd +' -d '+@database +' -i '
+@filepath +'\'+ @strfilename
exec @reexe=master.dbo.xp_cmdshell @strsql
if @reexe=0
set @returnsucceed=@returnsucceed+1
else
begin
select @strfilename
set @returncode=@returncode+1
endfetch next from fetfilename into @strfilename
endclose fetfilename
deallocate fetfilename
end
declare @returncode int
declare @returnsucceed int
set @returncode=0
set @returnsucceed=0
--這是我自己的測試環境
exec [usp_batchimport] @returncode output,@returnsucceed output,'win7-1706042132','temp','sa','123456','d:\sql'
print @returncode
print @returnsucceed
oracle使用bat指令碼批量執行sql檔案
1首先建立乙個字尾為.bat的檔案,內容如下 c sqlplusdb user name db pass word 172.0.0.1 1521 dbname d temp update 20140923.sql exit 語法分析 c sqlplus所在路徑 sqlplus 使用者名稱 密碼 db...
批量執行指令碼
1 執行指令碼 coding utf 8 xiaoluo usr bin python import paramiko import time,os,sys import threading status status dic def ssh2 ip,port,username,passwd,cmd...
批量Ping執行Bash指令碼
bin bash ping batch script 連線超時時間 tmout 3 最大執行緒數 max thread 4000 保留記憶體大小 min mem 400 預設ip配置,可通過 r ip ip指定,格式 ping batch.sh r 192.168.1.1 192.168.2.254...