--批量执行sql脚本
--批量执行文件夹下面的所有sql脚本
create procedure exeSqlFileBatch
(
@returnCode int=0 output, --返回错误数
@returnSucceed int=0 output, --成功执行文件数量
@serverName varchar(1000), --服务器名称
@dataBase varchar(500), --数据库名称
@uid varchar(50), --用户名
@pwd varchar(50), --密码
@filePath varchar(5000) --文件路径
)
with encryption as
declare @strsql varchar(6000)
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
--从临时表中提取有用的记录
select dbo.f_split(fileDes,' ')as fileDes
into #tmepUse from #tmptb
where fileDes like '%.sql'
--定义游标
declare fetFileName cursor
for select fileDes from #tmepUse
declare @strFileName varchar(2000)
declare @reExe int
--定义错误信息表
create table #errorTable(errorFileName varchar(1000))
--打开游标并历遍进行取值
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
--没办法,xp_cmdShell 总返回零。可能无法获取osql所发生的错误
insert #errorTable values(@strFileName)
set @returnCode=@returnCode+1
end
fetch next from fetFileName into @strFileName
end
close fetFileName
deallocate fetFileName
--返回错误错误信息
select *from #errorTable
return
--测试
declare @returnCode int
declare @returnSucceed int
set @returnCode=0
set @returnSucceed=0
exec exeSqlFileBatch @returnCode output,@returnSucceed output,'服务器名(或服务器IP)','数据库名','登录名','密码','sql文件路径(如:c:/)'
print @returnCode
print @returnSucceed
--测试前请先创建函数
/*-------------------
--实现split功能 的函数
--yangys 2005/07/04
--只返回最后的一串
*/
create function f_split(
@SourceSql varchar(8000),--字符串
@StrSeprate varchar(10)--分隔符
)
returns varchar(1000)
as
begin
declare @i int
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)
end
return @SourceSql
end
-- 允许配置高级选项
EXEC sp_configure 'show advanced options', 1
GO
-- 重新配置
RECONFIGURE
GO
-- 启用xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
--重新配置
RECONFIGURE
GO
--执行想要的xp_cmdshell语句
Exec xp_cmdshell 'query user'
GO
--用完后,要记得将xp_cmdshell禁用(出于安全考虑)
-- 允许配置高级选项
EXEC sp_configure 'show advanced options', 1
GO
-- 重新配置
RECONFIGURE
GO
-- 禁用xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 0
GO
--重新配置
RECONFIGURE
GO
分享到:
相关推荐
批量执行SQL脚本,多个SQL脚本一起执行。
批量执行SQL脚本(附源码)。 可选目录,自动搜索子目录; 显示执行进度; 双击可显示SQL脚本内容; 可提取SQL过程、视图、函数脚本。
1、批量执行SQL脚本文件; 2、文件拷贝操作。 其中,App.config为工具配置文件, ;DataBase = master;User ID=sa; password="/> 上述 ;DataBase = master;User ID=sa; password="/>中,value的值为数据库...
批量执行sql脚本的web工程,通过myeclipse导入工程即可,经过测试可以批量导入oracle与sql server2005的脚本,而且是web页面的向导式执行*.sql脚本文件 支持事务,任何执行过程出现异常,均会提示并且回滚操作,页面...
批量执行多个sql脚本工具。 自己写的。 附有源码。
此BAT脚本可以帮助开发人员将某文件夹下所有SQL脚本按文件名依次在指定数据库中批量执行。并且生成日志文件,可查看执行过的所有脚本名称和错误信息。 注意: (1) 使用前需确保已将sqlcmd加入到系统环境变量中。 (2...
自动读取指定目录sql文件,科批量执行SQL server 脚本,fw4.0
用于SQLServer的sql脚本批量执行,会记录每次执行的脚本和执行结果。可以调整脚本执行顺序,支持脚本可视化,及关键字变色
Python脚本,批量执行数据库脚本,适用于SQL Server数据库,后续会上传MySQL的批量执行sql脚本
可以批量执行SQL脚本的小工具,不限制数据库。如果脚本运行不正确,程序会停止运行。
powershell批量执行SqlServer脚本。包含Windows2012和Windows2016版本
SQLBatch Runner是面向SQL Server设计的SQL脚本批量执行工具,通过简单的点击鼠标,即可方便的在多个SQL Server实例上运行多个脚本,并且记录详细的执行日志,提供事务保护,将多脚本执行任务变得高效、可控、易于...
SQL脚本批处理执行。
1、批量执行SQL脚本文件; 2、文件拷贝操作。 其中,App.config为工具配置文件, <?xml version="1.0" encoding="utf-8" ?> ;DataBase = master;User ID=sa; password="/> 上述 ;DataBase = ...
该工具主要用具批量执行SQL脚本,对于SQL 数据库的初始化以及升级脚本包的安装带来便利
个人博客中的Windows环境下批量执行Oracle的SQL的一种方法这篇文章的附件 个人博客中的Windows环境下批量执行Oracle的SQL的一种方法这篇文章的附件
以上就是小编为大家带来的mysql批量执行sql文件的方法全部内容了,希望大家多多支持软件开发网~ 您可能感兴趣的文章:Shell脚本中执行sql语句操作mysql的5种方法教你如何在MySQL命令行中使用SQL语句的规则Mysql...
可以批量执行sql脚本文件,执行完后可打开数据库查看