视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
sqlserver自动生成批量执行SQL脚本的批处理
2020-11-09 13:53:23 责编:小采
文档


场景: DBA那边给我导出了所有的存储、函数等等对象的创建脚本,有上千个文件. 现在需要将这些对象创建脚本导入到另外一个库,如何解决呢? 手动一个个执行显然不太现实. 于是手动写了一个批处理,将所有的文件形成一个.SQL的脚本,最后以@生成的.SQL脚本方式导入

场景:

DBA那边给我导出了所有的存储、函数等等对象的创建脚本,有上千个文件.

现在需要将这些对象创建脚本导入到另外一个库,如何解决呢?

手动一个个执行显然不太现实.

于是手动写了一个批处理,将所有的文件形成一个.SQL的脚本,最后以@生成的.SQL脚本方式导入到目标库中.

OS环境:WINDOWS xp

脚本内容如下:

@echo off if exist list.sql del list.sql /q :input cls set input=: set /p input= 请输入要进行判断的路径: set "input=%input:"=%" :: 上面这句为判断%input%中是否存在引号,,有则剔除。 if "%input%"==":" goto input if not exist "%input%" goto input for /f "delims=" %%i in ('dir /b /a-d /s "%input%"') do echo @@%%~fnxi>>list.sql if not exist list.sql goto no_file start list.sql exit :no_file cls echo %cur_dir% 出现错误,未成功生成list.sql脚本! pause

使用:

另存为.BAT类型文件后,双击执行.

输入你脚本的路径:

如我的E盘CRY文件夹下,有如下类型的文件:

TEST.PRC

...

123TEST1.FNC(有子文件夹123)

...

TEST2.VW

..

执行该批处理后,最后生成的list.sql脚本文件内容如下(执行完批处理后会用默认的编辑器自动打开该文件):

@@E:cryTEST.PRC

...

@@E:cry123TEST1.FNC

...

@@E:cryTEST2.VW

...

打开SQLPLUS,以指定用户登录数据库,然后执行: (我的脚本文件生成在d盘)

@D:list.sql

这样所有的对象就会自动在指定用户下生成.

---------------------------

注意:这样生成的对象很多都是无效的,因为没有按顺序生成,所以建议在自动执行完后,再编译一下所有无效的对象.

下载本文
显示全文
专题