是否有办法编写将执行SQL脚本升序文件夹名称(下面显示的示例)的Windows批处理文件,并以前面文件名的数字顺序执行SQL脚本文件(例如:在1.文件夹 - > 1 .SQL,2.SQL,3。SQL)。
例如:
所以基本上有一种方法可以按文件夹名称和文件名的升序执行脚本
答案 0 :(得分:0)
首先,我们需要按照我们需要的顺序形成文件列表。然后为每个文件启动SQLCMD。要按此顺序获取列表,您可以使用DIR
Windows命令。例如:
dir "c:\SQL_SCRIPTS" /S /B /A-D /ON
此命令将显示"c:\SQL_SCRIPTS"
文件夹中包含子文件夹(/S
)的所有文件。它将仅显示没有附加信息(日期,属性,...)(/B
)和没有文件夹列表(/A-D
)的文件名。我们需要字母名称顺序(/ON
)。
现在我们需要为此列表创建一个循环,并为每一行运行一个SQLCMD命令,以便我们使用FOR
Windows命令。
此脚本将生成cmd.sql
文件以执行“c:\ SQL_SCRIPTS”文件夹中的所有脚本:
FOR /f "Delims=" %%I in ('dir "c:\SQL_SCRIPTS" /S /B /A-D /ON') DO echo sqlcmd -U myLogin -P myPassword -S MyServerName -d MyDatabaseName -i "%%I" >>cmd.sql
或者另一种方式 - 立即在循环中运行每个命令而不生成cmd.sql
文件:
FOR /f "Delims=" %%I in ('dir "c:\SQL_SCRIPTS" /S /B /A-D /ON') DO sqlcmd -U myLogin -P myPassword -S MyServerName -d MyDatabaseName -i "%%I"