如何使用sqlcmd运行sql脚本文件并输出到shell和文件

Noa*_*ish 13 logging sqlcmd

我正在尝试sqlcmd使用以下命令从文件运行sql脚本:

sqlcmd -S <server> -d <database> -i <input file> -o <output file> 
      -U <user> -P <password>
Run Code Online (Sandbox Code Playgroud)

我运行我的sql文件并输出到日志文件.

问题是这改变了sqlcmd文件的输出..我想得到输出到shell.

Ger*_*ima 9

@Noam,

UNIX世界中有一个标准程序,它从stdin读取并写入stdout 指定文件:tee命令.以下示例将当前目录列为stdout和"myfile":

$ ls | tee "myfile"
Run Code Online (Sandbox Code Playgroud)

有一些用于windows的开源端口,比如wintee,它们甚至可以实现自己的实现(参见此处),但PowerShell实际上已经内置了这个实用程序:Tee-Object.以下示例类似于之前的,在PowerShell中:

PS [c:\tmp]
> dir | tee myDirContents.txt
Run Code Online (Sandbox Code Playgroud)

因此,以下命令将使用当前的Windows凭据将myscript.sql执行到myserver中,其结果将输出到控制台输出到"result.txt":

PS [c:\tmp]
> sqlcmd -i mysrcipt.sql -S myserver -E | tee "result.txt"
Run Code Online (Sandbox Code Playgroud)