`
zhuojb
  • 浏览: 91208 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

批量执行文件夹下面的所有sql脚本

阅读更多
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

冠亿科技,尽心尽力
分享到:
评论

相关推荐

    SQL脚本批量执行脚本

    此BAT脚本可以帮助开发人员将某文件夹下所有SQL脚本按文件名依次在指定数据库中批量执行。并且生成日志文件,可查看执行过的所有脚本名称和错误信息。 注意: (1) 使用前需确保已将sqlcmd加入到系统环境变量中。 (2...

    sqlserver批量执行脚本文件

    在SQL Server环境中,批量执行SQL脚本文件是数据库管理员和开发者日常工作中常见的一项任务。本文将深入探讨如何在.NET环境中高效地实现这一功能,并对比使用sqlcmd工具的方法。以下是一些关键知识点: 1. **SQL ...

    bat+sqlcmd 批量运行脚本

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

    批量执行SQL脚本工具-PowerShell.7z

    在"批量执行SQL脚本工具-PowerShell.7z"这个压缩包中,包含了适用于Windows 2012和Windows 2016操作系统的PowerShell脚本,旨在帮助用户批量处理SQL Server中的SQL脚本执行。以下是这个工具的主要知识点: 1. **...

    循环执行文件夹下的sql

    "循环执行文件夹下的sql"这个标题描述了一个实用的小工具,它的功能是在指定的文件夹中自动循环执行所有的SQL脚本,从而极大地提高了数据库管理员的工作效率。这个工具对于需要批量处理数据库更新、数据迁移或者测试...

    pl sql批量执行多个sql文件和存储过程

    对于Oracle数据库而言,PL/SQL是一种非常强大的工具,它不仅可以用于编写复杂的数据库应用程序,还能够方便地进行SQL脚本的批量执行以及存储过程的调用。本文将详细介绍如何使用PL/SQL Developer来实现这一功能。 #...

    Oracle & SQLServer 脚本批量执行方法

    本文将详细介绍如何在Oracle与SQL Server中批量执行SQL脚本,以提高数据库管理和维护的效率。 一、Oracle批量执行SQL脚本 1. **SQL*Plus工具**: Oracle提供了SQL*Plus,一个命令行工具,可以用于执行SQL语句和PL/...

    sqlserver多数据库自启动定时备份工具批量执行脚本

    至于`sqls`文件夹,可能包含了预定义的SQL脚本,这些脚本可能用于特定的备份任务,比如创建备份作业,或者用于在每个数据库上执行自定义的备份逻辑。用户可以根据需要修改或添加这些脚本来满足特定的备份需求。 ...

    批量执行Sql.bat

    这意味着所有的SQL脚本应当以.sql为扩展名,并且位于与“批量执行Sql.bat”同一文件夹内。这样做是为了方便批处理文件找到并执行这些SQL文件。 3. **运行批处理文件**:完成上述设置后,只需双击“批量执行Sql.bat...

    SQL插入脚本生成器

    SQL脚本可以被存储、调试和重复执行,提高工作效率。 2. **数据库连接信息**:在使用SQL插入脚本生成器前,用户需要提供数据库的连接信息,包括数据库名称、用户名和密码。这些信息用于建立与目标数据库的连接,...

    SQL脚本批处理

    首先,"SQL脚本批处理"是一个功能强大的工具,允许用户一次性执行一个文件夹内包含的所有SQL脚本。这种批处理能力在数据库管理员或者开发人员需要执行一系列数据库更新、数据迁移或测试场景时尤其有用。批量执行可以...

    PowerDesigner批量生成SQL脚本时将name生成数据库中字段的comment

    在本篇中,我们将探讨如何使用PowerDesigner批量生成SQL脚本来将name属性转换为数据库中字段的comment。 首先,我们需要了解PowerDesigner中的PDM(Physical Data Model),这是一个物理数据模型,它包含了数据库的...

    sql 脚本升级的多线程程序

    这种程序通常用于批量执行一系列SQL脚本来更新数据库结构、添加新表、修改现有表、创建索引或执行其他数据库维护任务。在数据库管理系统(DBMS)中,升级脚本是确保数据库版本同步的重要工具,特别是在软件迭代频繁...

    shell的多线程&当前文件夹下批量插入MySQL

    在这个例子中,任务可能是执行SQL脚本并将其插入到MySQL数据库中。 4. 等待所有子进程结束:使用`wait`命令确保所有子进程执行完毕后才继续执行后面的代码。关闭FIFO文件描述符,并最终退出脚本。 下面是一个具体...

    sql_run.rar_mssql2000_run_sqlr

    总的来说,这个压缩包包含了一个用于自动化执行MSSQL2000数据库中SQL脚本的解决方案,这对于数据库管理和开发工作流程来说非常实用,特别是在需要批量执行脚本的情况下。理解如何使用批处理文件和SQL Server的命令行...

    谷粒商城(学习笔记) sql文件

    在这个压缩包中,我们能找到“gulimall-sql”这个子文件夹,它很可能是包含了创建表、插入数据以及可能的数据库配置等所有必要的SQL语句。接下来,我们将深入探讨SQL语言在数据库设计和管理中的重要性,以及在构建...

    合并SQL小工具 多个SQL文件合并

    描述中提到的"可以合并多个SQL文件,一般用于生产前数据合并",这表明这款工具可能被广泛应用于生产环境的准备工作,比如在系统更新、数据库结构调整或数据导入导出前,将所有必要的SQL脚本整合到一起,确保一次性...

    sql,GBK2312,UTF-8,UTF-8 无BOM,脚本字符集转换,脚本格式转换

    8. **sourceFolder和targetFolder**:这两个文件夹可能是用来存放待转换的SQL脚本(sourceFolder)和转换后的文件(targetFolder)的。 在实际应用中,正确地进行字符集转换非常重要,因为错误的编码可能导致乱码,...

    SQL_Server_2008维护计划实现数据库定时自动备份

    步骤通常会执行一个T-SQL脚本来完成数据库的备份工作。例如,在凌晨时段执行的备份脚本可能如下所示: ```sql DECLARE @name VARCHAR(250); SET @name = 'C:\Backup\TestDB1_' + CONVERT(VARCHAR(50), GETDATE(), ...

    批量修改windows下文件夹内文件名称 三种方式

    保存为`.bat`文件后,运行这个脚本会将当前目录及其子目录下的所有文件重命名为“新名称_随机数”的格式。注意替换“新名称”为你想要的前缀。 ### 3. 第三方工具 - 使用"批量改变文件名称.exe" 你提到的`批量改变...

Global site tag (gtag.js) - Google Analytics