drop function f_split
go
/*****************************************************************
--PROGRAMMER:EDWARD
--PURPOSE:批量执行sql脚本,批量执行文件夹下面的所有sql脚本
--DATETIME:2006-11-1
*****************************************************************/
if exists(select * from sysobjects where name='exeSqlFileBatch' and type='P')
begin
drop proc exeSqlFileBatch
end
go
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+'\*.tab'
--创建临时表
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 '%.tab'
--定义游标
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
--执行该数据脚本文件 【OSQL命令行执行查询工具】[-S服务器][-U登录标识符][-P口令][-d使用数据库名][-i输入文件][][]
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
--测试--------------------------------------------------------------------------
--测试准备
--测试前请先创建函数
/*-------------------
--实现split功能 的函数
--只返回最后的一串
*/
if exists(select * from sysobjects where name='f_split' and type='FN')
begin
drop function f_split
end
go
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
--恢复系统存储过程XP_CMDSHELL
use master
go
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll'
go
--sql2005下启用XP_CMDSHELL
-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO
--测试
declare @returnCode int
declare @returnSucceed int
set @returnCode=0
set @returnSucceed=0
set nocount on
exec exeSqlFileBatch @returnCode output,@returnSucceed output,'.','test11','sa','sa','E:\QPCT系统v2.0\SERVER\SQL_SPACE_JZX'
print @returnCode
print @returnSucceed
冠亿科技,尽心尽力
分享到:
相关推荐
此BAT脚本可以帮助开发人员将某文件夹下所有SQL脚本按文件名依次在指定数据库中批量执行。并且生成日志文件,可查看执行过的所有脚本名称和错误信息。 注意: (1) 使用前需确保已将sqlcmd加入到系统环境变量中。 (2...
在SQL Server环境中,批量执行SQL脚本文件是数据库管理员和开发者日常工作中常见的一项任务。本文将深入探讨如何在.NET环境中高效地实现这一功能,并对比使用sqlcmd工具的方法。以下是一些关键知识点: 1. **SQL ...
bat+sqlcmd 批量运行脚本 Hello,此BAT脚本可以帮助开发人员将某文件夹下所有SQL脚本按文件名依次在指定数据库中批量执行。不用忍受powershell invoke-sqlcmd 的笨重,在指运行时多一种选择。
在"批量执行SQL脚本工具-PowerShell.7z"这个压缩包中,包含了适用于Windows 2012和Windows 2016操作系统的PowerShell脚本,旨在帮助用户批量处理SQL Server中的SQL脚本执行。以下是这个工具的主要知识点: 1. **...
"循环执行文件夹下的sql"这个标题描述了一个实用的小工具,它的功能是在指定的文件夹中自动循环执行所有的SQL脚本,从而极大地提高了数据库管理员的工作效率。这个工具对于需要批量处理数据库更新、数据迁移或者测试...
对于Oracle数据库而言,PL/SQL是一种非常强大的工具,它不仅可以用于编写复杂的数据库应用程序,还能够方便地进行SQL脚本的批量执行以及存储过程的调用。本文将详细介绍如何使用PL/SQL Developer来实现这一功能。 #...
本文将详细介绍如何在Oracle与SQL Server中批量执行SQL脚本,以提高数据库管理和维护的效率。 一、Oracle批量执行SQL脚本 1. **SQL*Plus工具**: Oracle提供了SQL*Plus,一个命令行工具,可以用于执行SQL语句和PL/...
至于`sqls`文件夹,可能包含了预定义的SQL脚本,这些脚本可能用于特定的备份任务,比如创建备份作业,或者用于在每个数据库上执行自定义的备份逻辑。用户可以根据需要修改或添加这些脚本来满足特定的备份需求。 ...
这意味着所有的SQL脚本应当以.sql为扩展名,并且位于与“批量执行Sql.bat”同一文件夹内。这样做是为了方便批处理文件找到并执行这些SQL文件。 3. **运行批处理文件**:完成上述设置后,只需双击“批量执行Sql.bat...
SQL脚本可以被存储、调试和重复执行,提高工作效率。 2. **数据库连接信息**:在使用SQL插入脚本生成器前,用户需要提供数据库的连接信息,包括数据库名称、用户名和密码。这些信息用于建立与目标数据库的连接,...
首先,"SQL脚本批处理"是一个功能强大的工具,允许用户一次性执行一个文件夹内包含的所有SQL脚本。这种批处理能力在数据库管理员或者开发人员需要执行一系列数据库更新、数据迁移或测试场景时尤其有用。批量执行可以...
在本篇中,我们将探讨如何使用PowerDesigner批量生成SQL脚本来将name属性转换为数据库中字段的comment。 首先,我们需要了解PowerDesigner中的PDM(Physical Data Model),这是一个物理数据模型,它包含了数据库的...
这种程序通常用于批量执行一系列SQL脚本来更新数据库结构、添加新表、修改现有表、创建索引或执行其他数据库维护任务。在数据库管理系统(DBMS)中,升级脚本是确保数据库版本同步的重要工具,特别是在软件迭代频繁...
在这个例子中,任务可能是执行SQL脚本并将其插入到MySQL数据库中。 4. 等待所有子进程结束:使用`wait`命令确保所有子进程执行完毕后才继续执行后面的代码。关闭FIFO文件描述符,并最终退出脚本。 下面是一个具体...
总的来说,这个压缩包包含了一个用于自动化执行MSSQL2000数据库中SQL脚本的解决方案,这对于数据库管理和开发工作流程来说非常实用,特别是在需要批量执行脚本的情况下。理解如何使用批处理文件和SQL Server的命令行...
在这个压缩包中,我们能找到“gulimall-sql”这个子文件夹,它很可能是包含了创建表、插入数据以及可能的数据库配置等所有必要的SQL语句。接下来,我们将深入探讨SQL语言在数据库设计和管理中的重要性,以及在构建...
描述中提到的"可以合并多个SQL文件,一般用于生产前数据合并",这表明这款工具可能被广泛应用于生产环境的准备工作,比如在系统更新、数据库结构调整或数据导入导出前,将所有必要的SQL脚本整合到一起,确保一次性...
8. **sourceFolder和targetFolder**:这两个文件夹可能是用来存放待转换的SQL脚本(sourceFolder)和转换后的文件(targetFolder)的。 在实际应用中,正确地进行字符集转换非常重要,因为错误的编码可能导致乱码,...
步骤通常会执行一个T-SQL脚本来完成数据库的备份工作。例如,在凌晨时段执行的备份脚本可能如下所示: ```sql DECLARE @name VARCHAR(250); SET @name = 'C:\Backup\TestDB1_' + CONVERT(VARCHAR(50), GETDATE(), ...
保存为`.bat`文件后,运行这个脚本会将当前目录及其子目录下的所有文件重命名为“新名称_随机数”的格式。注意替换“新名称”为你想要的前缀。 ### 3. 第三方工具 - 使用"批量改变文件名称.exe" 你提到的`批量改变...