DOS命令执行目录及子目录中的所有SQL脚本

问题描述 投票:0回答:5

我需要一个 DOS 命令或一个批处理 (.bat) 文件,我可以执行它来运行目录及其子目录中的所有 *.sql 脚本。解决方案是什么?

sql t-sql batch-file dos
5个回答
6
投票

以下内容将帮助您开始

for /r %f in (*.sql) do echo %f

从命令行运行,将打印当前目录和所有子目录中所有 SQL 文件的名称。

然后用

sqlcmd <connection args> -i%f
替换
echo %f
来执行脚本。

希望这有帮助。


3
投票

给你。该批处理文件将执行目录及其子目录中的所有sql文件。它还会创建一个包含结果的output.txt 文件,以便您可以看到错误和其他内容。关于批处理文件的一些注释:

  • [YourDatabase] 是您要执行脚本的数据库的名称。
  • [YourPath] 是保存所有脚本的路径。
  • [YourServerName\YourInstanceName] 是 SQL 服务器名称和实例名称,以 '\' 分隔
  • 您需要将每个变量的“=”后面的文本替换为适合您的服务器的内容
  • 确保不要在“=”周围添加空格
  • 请勿在 [YourPath] 周围添加任何引号
  • 确保 [YourPath] 末尾有一个“\”

    设置数据库=[您的数据库]

    SET ScriptsPath=[你的路径]

    SET ServerInstance=[您的服务器名称\您的实例名称]

    如果存在“%ScriptsPath%output.txt”del“%ScriptsPath%output.txt”

    输入 NUL >“%ScriptsPath%output.txt”

    FOR /R "%ScriptsPath%" %%G IN (*.sql) DO (

    sqlcmd -d %Database% -S %ServerInstance% -i "%%G" -o "%%G.txt"

    回声................................................ ........................................ >>“%ScriptsPath%output.txt”

    echo 执行:“%%G”>>“%ScriptsPath%output.txt”

    回声................................................ ........................................ >>“%ScriptsPath%output.txt”

    复制“%ScriptsPath%output.txt”+“%%G.txt”“%ScriptsPath%output.txt”

    删除“%%G.txt”


3
投票
for %f in ("c:\path\to\dir\*.sql") do sqlcmd -S [SERVER_NAME] -d [DATABASE_NAME] -i "%f" -b

0
投票

尝试

for
循环。该命令的选项已经演变,我不确定您使用的是哪个版本的 DOS,但假设 DOS 包含“来自 Windows XP 的
cmd.exe
”,类似这样的内容可以工作:

for /r . %f in (*.sql) do @echo %f

好的,这只会打印文件的名称。我假设您已经有一个可以从命令行运行的程序,该程序将执行 one SQL 文件,您可以使用它来代替

echo

欲了解更多信息,请尝试

for /?


0
投票
SET Host=pmegat
SET Database=pdb
SET user=usr
SET pwd=abc123
SET ScriptsPath=C:\Work\Scripts

IF EXIST "%ScriptsPath%output.sql" del "%ScriptsPath%output.sql"

echo SPOOL Script.log >> "%ScriptsPath%output.sql"

FOR /R "%ScriptsPath%" %%G IN (*.sql) DO (

echo Prompt execute @"%%G" >> "%ScriptsPath%output.sql"
echo @"%%G" >> "%ScriptsPath%output.sql"

)
echo SPOOL OFF >> "%ScriptsPath%output.sql"
echo exit >> "%ScriptsPath%output.sql"

sqlplus %user%/%pwd%@%Host%:1521/%Database% @"%ScriptsPath%output.sql"
© www.soinside.com 2019 - 2024. All rights reserved.