数据库技术:Windows环境下实现批量执行Sql文件

使用场景:按文件名字正序,批量执行某文件夹下的所有sql文件,并输出日志适合人群:实施工程师一、使用篇1、准备bat文件:1.1、execsql.bat(执行脚本)(文件编码:ansi,这个编码与下面

使用场景:按文件名字正序,批量执行某文件夹下的所有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 完成!  pause  

1.2、showorder.bat(查看什么脚本会被执行,按什么顺序执行)(文件编码:ansi)
  @echo off  for /r %%i in (*.sql) do ( echo %%i )    echo 完成!  pause  

2、将execsql.bat复制到目标根目录下,文件目录结构(文件夹路径最好没有中文),如图,假设我需要执行此文件夹下所有的sql文件

Windows环境下实现批量执行Sql文件

3、【可选做】排序,如果对sql文件的执行顺序有要求的,需要对文件进行重命名,如上图所示,执行顺序为文件名字正序,建议使用“01.”这种作为文件名前缀

将showorder.bat复制到目标根目录下,双击运行,查看执行顺序是否符合预期

Windows环境下实现批量执行Sql文件

4、【重要】编码转换,一般情况下.sql文件的编码都是utf8,如果.sql文件内容中,使用了中文(注释不算),则需要修改文件编码是gb2312,否则会执行错误的sql语句。

比如01.xxx.sql的编码是utf8的,但插入数据库数据却是乱码
Windows环境下实现批量执行Sql文件

Windows环境下实现批量执行Sql文件

以下4.1和4.2择一执行

4.1、修改编码的方法为:使用notepad打开.sql文件,ctrl+a(全选),ctrl+c(复制),点击notepad“编码”->“编码字符集”->“中文”->“gb2312”,应该会出现一个“无法恢复警告”,点“是”,ctrl+a(全选),ctrl+v(粘贴),最后保存

4.2、使用工具(encodingconverter)批量修改:下载好工具后解压即可运行,双击batchconvertor.exe,如下图所示设置

Windows环境下实现批量执行Sql文件

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

Windows环境下实现批量执行Sql文件

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

Windows环境下实现批量执行Sql文件

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

Windows环境下实现批量执行Sql文件

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

Windows环境下实现批量执行Sql文件

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

Windows环境下实现批量执行Sql文件

特别提醒:此bat文件会检查当前文件夹下所有的.sql文件并执行,再次执行bat时需要删掉一些不用再次执行的.sql文件

二、原理篇

sqlcmd和osql两种命令都可以执行sql文件,两者参数配置项几乎完全一样,这里选用sqlcmd是出于这个的日志输出比较整洁,且微软打算在未来sqlserver中删除osql(不再支持)。两种命令都可以在cmd中使用xxx/?来查询帮助

sqlcmd的官方文档:

osql的官方文档:

需要了解更多数据库技术:Windows环境下实现批量执行Sql文件,都可以关注数据库技术分享栏目—猴子技术宅(www.ssfiction.com)

到此这篇关于windows环境下实现批量执行sql文件的文章就介绍到这了,更多相关windows批量执行sql文件内容请搜索<猴子技术宅>以前的文章或继续浏览下面的相关文章希望大家以后多多支持<猴子技术宅>!

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/sqljc/838252.html

发表评论

邮箱地址不会被公开。 必填项已用*标注