Windows中如何批量执行Sql文件,哪些事项要注意
Admin 2022-08-05 群英技术资讯 1572 次浏览
这篇文章主要介绍了Windows中如何批量执行Sql文件,哪些事项要注意相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Windows中如何批量执行Sql文件,哪些事项要注意文章都会有所收获,下面我们一起来看看吧。使用场景:按文件名字正序,批量执行某文件夹下的所有sql文件,并输出日志
适合人群:实施工程师
1、准备bat文件:
1.1、ExecSql.bat(执行脚本)(文件编码:ANSI,这个编码与下面提到的utf8和gb2312都不一样,用记事本编辑默认就是这个编码,所以不一定要下notepad++)
@ECHO OFF SET dbhost=127.0.0.1 SET dbuser=sa SET dbpasswd=sa SET dbName=Application REM 以下内容不建议修改 REM 执行脚本的路径,此处为当前路径 SET sqlpath=%~dp0 REM 日志文件名 SET temp=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.log SET logFileName=%sqlpath%%temp: =0% ::执行sql脚本 echo 开始执行sql脚本,所有日志记录于%logFileName% for /r %%i in (*.sql) do ( echo %%i被执行 & echo ----- %%i log start ----- >> %logFileName% & sqlcmd -S %dbhost% -U %dbuser% -P %dbpasswd% -d %dbName% -i %%i -k -b -m 10 >> %logFileName% & echo ----- %%i log end ----- >> %logFileName% & @echo. >> %logFileName%) ECHO 完成! PAUSE1.2、ShowOrder.bat(查看什么脚本会被执行,按什么顺序执行)(文件编码:ANSI)
@ECHO OFF for /r %%i in (*.sql) do ( echo %%i ) ECHO 完成! PAUSE2、将ExecSql.bat复制到目标根目录下,文件目录结构(文件夹路径最好没有中文),如图,假设我需要执行此文件夹下所有的sql文件

3、【可选做】排序,如果对sql文件的执行顺序有要求的,需要对文件进行重命名,如上图所示,执行顺序为文件名字正序,建议使用“01.”这种作为文件名前缀
将ShowOrder.bat复制到目标根目录下,双击运行,查看执行顺序是否符合预期

4、【重要】编码转换,一般情况下.sql文件的编码都是utf8,如果.sql文件内容中,使用了中文(注释不算),则需要修改文件编码是GB2312,否则会执行错误的sql语句。
比如01.XXX.sql的编码是utf8的,但插入数据库的数据却是乱码


以下4.1和4.2择一执行
4.1、修改编码的方法为:使用Notepad打开.sql文件,ctrl+A(全选),ctrl+C(复制),点击Notepad“编码”->“编码字符集”->“中文”->“GB2312”,应该会出现一个“无法恢复警告”,点“是”,ctrl+A(全选),ctrl+V(粘贴),最后保存
4.2、使用工具(EncodingConverter)批量修改:下载好工具后解压即可运行,双击BatchConvertor.exe,如下图所示设置

转化完成后会再执行会得到正确的中文

5、修改bat文件,用Notepad++或别的编辑器打开bat文件,修改ExecSql.bat中的数据库连接相关信息,只改跟连接数据库相关的4个变量即可,其他不需要修改,改完后保存

6、双击bat文件,会有如图所示的输出

7、查看日志,检查每一个.log文件,没有消息就是好消息,一个执行正确脚本的.log文件一般长这样

有错误也会反馈出来,如脚本再执行一次就会报错

特别提醒:此bat文件会检查当前文件夹下所有的.sql文件并执行,再次执行bat时需要删掉一些不用再次执行的.sql文件
sqlcmd和osql两种命令都可以执行sql文件,两者参数配置项几乎完全一样,这里选用sqlcmd是出于这个的日志输出比较整洁,且微软打算在未来SqlServer中删除osql(不再支持)。两种命令都可以在cmd中使用XXX/?来查询帮助
sqlcmd的官方文档:https://docs.microsoft.com/zh-cn/sql/tools/sqlcmd-utility?view=sql-server-ver15

osql的官方文档:https://docs.microsoft.com/zh-cn/sql/tools/osql-utility?view=sql-server-ver15

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
日志文件满而造成SQL数据库无法写入文件时,可用两种方法:一种方法:清空日志。1.打开查询分析器,输入命令DUMPTRANSACTION数据库名WITHNO_LOG2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收
UNION 操作符用于合并两个或多个 SELECT 语句的结果集,下面这篇文章主要给大家介绍了关于sql语句中union用法与踩坑的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
SQL LCASE函数把字段的值转换为小写,有不少朋友对于LCASE函数比较感兴趣,下面小编给大家整理和分享了相关知识和资料,易于大家学习和理解,有需要的朋友可以借鉴参考,下面我们一起来了解一下吧。
SQL NULL 空值代表丢失的未知数据。默认情况下,表列可以保存 NULL 值。本章解释 IS NULL 和 IS NOT NULL 操作符。如果表中的列是可选的,那么我们可以插入一个新记录或更新一个现有记录,而无需向列添加一个值。这意味着该字段将存储为 NULL 。NULL 值的处理与其他值不同。 NULL 为未知或不适当值的占位符。
SQL通配符用于替换字符串中的任何其他字符。通配符与 SQL LIKE 运算符一起使用。在 WHERE 子句中使用LIKE运算符来搜索列中的指定模式。 有两个通配符与 LIKE 运算符一起使用:% - 百分号表示零个,一个或多个字符;_ - 下划线表示单个字符
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008