Windows批处理文件以升序文件夹名称的顺序执行SQL脚本

时间:2014-09-09 09:41:44

标签: sql sql-server batch-file

是否有办法编写将执行SQL脚本升序文件夹名称(下面显示的示例)的Windows批处理文件,并以前面文件名的数字顺序执行SQL脚本文件(例如:在1.文件夹 - > 1 .SQL,2.SQL,3。SQL)。

例如:

  1. Folderx
    1. scX.sql
    2. scY.sql
    3. scZ.sql 更多..
  2. Foldery
    1. scA.sql
    2. spB.sql
    3. spC.sql 更多...
  3. Folderz
    1. vwV.sql
    2. vwG.sql 更多...
  4. 所以基本上有一种方法可以按文件夹名称和文件名的升序执行脚本

1 个答案:

答案 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"