用于执行SQL脚本的批处理文件 - 没有回车符

时间:2014-04-17 21:24:59

标签: sql-server batch-file

文件夹中有一些脚本文件必须在SQL Server数据库上执行。不是文件夹中的所有文件,只是一个子集。以下命令位于批处理文件中,它正在运行但文件全部在一行上。它很难阅读(文件比例子中显示的文件多3个)。有没有办法可以在各行上列出文件(为了便于阅读)而不丢失功能?目标是仅使用批处理文件执行此任务 - 不是批处理文件+对每个要执行的脚本使用:r命令的SQL文件。

sqlcmd -S ServerInstance -E -d DatabaseName -i .\Tables\stage.products.sql, .\Tables\dbo.products.sql, .\Sprocs\dbo.BuildProducts.sql

2 个答案:

答案 0 :(得分:2)

如果它是批处理文件,您可以在每行的末尾添加^: echo Line 1 ^ and line 2 ^ and line 3 will all echo in a single line.

运行上述批处理文件时,结果为:

  

第1行,第2行和第3行都将在一行中回显。

答案 1 :(得分:1)

@echo off
setlocal EnableDelayedExpansion

set "sqls="
for %%a in (
            .\Tables\stage.products.sql
            .\Tables\dbo.products.sql
            .\Sprocs\dbo.BuildProducts.sql
           ) do set "sqls=!sqls!, %%a"

sqlcmd -S ServerInstance -E -d DatabaseName -i %sqls:~1%

以前的批处理文件允许您按照您的要求列出各行上的文件以便于阅读。它不允许您包含比原来可以包含在一行中的文件更多的文件。