SQL Server 2008 R2 - sqlcmd bat 文件在文件夹中运行一批 sql 查询,但它们没有按文件名的顺序运行
Posted
技术标签:
【中文标题】SQL Server 2008 R2 - sqlcmd bat 文件在文件夹中运行一批 sql 查询,但它们没有按文件名的顺序运行【英文标题】:SQL Server 2008 R2 - sqlcmd bat file to run a batch of sql queries in folder but they are not running in order of file name 【发布时间】:2017-09-19 05:53:17 【问题描述】:我有一堆我写的写好的 sql 脚本,我希望在一个文件夹中按顺序运行。阅读后,我求助于创建一个包含使用 sqlcmd 的 bat 文件。对于这组特定的脚本,当我运行 bat 时,它似乎没有按顺序运行。我不知道发生了什么,因为我尝试在开头使用前缀数字重命名 sql 脚本,尝试使用字母,甚至使用 Windows 资源管理器将整个脚本重命名为数字/字母。
这个过程可能看起来像这样 A.sql - B.sql - C.sql - D.sql - F.sql - G.sql - E.sql
关于我缺少什么或我如何错误地重命名这些文件有什么想法吗?谢谢
我的 bat 文件中有什么
for %%G in (*.sql) do sqlcmd /S W-VAN-A124178\HAZUSPLUs-s-rVR /d
BC_Exposure_2016 -E -i"%%G"
pause
【问题讨论】:
我认为您可能需要运行此处指出的多个 bat 文件 (***.com/questions/2071408/…) 或通过 sql 代理运行 如果您想订购文件,powershell 可能是更好(更现代)的替代方案 【参考方案1】:您可以解析dir
命令的输出,您可以对其进行修改,以便文件按字母顺序显示。为此,您可以使用 dir /A-D /B /ON
:/A-D
排除目录/B
排除许多在解析时烦人的杂乱附加信息/ON
按名称排序
所以要修改你的代码:
for /f %%G in ('dir /A-D /B /ON') do (
sqlcmd /S W-VAN-A124178\HAZUSPLUs-s-rVR /d BC_Exposure_2016 -E -i"%%G"
)
pause
应该可以。我在循环周围加上括号。一次是因为我已经习惯了,而且代码被分成两行。
【讨论】:
以上是关于SQL Server 2008 R2 - sqlcmd bat 文件在文件夹中运行一批 sql 查询,但它们没有按文件名的顺序运行的主要内容,如果未能解决你的问题,请参考以下文章
跪求SQL Server 2008 R2 Standard (64
SQL Server2008和SQL Server2008R2的区别,高手速进
SQL Server 2008 R2 Express三个版本有啥区别?
数据库SQL server 2008 R2和SQL server 2008 能一起安装吗?为啥安装完只剩SQL server 2008 R2一个了?