文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

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

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

到此这篇关于Windows环境下实现批量执行Sql文件的文章就介绍到这了,更多相关Windows批量执行Sql文件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯