如何格式化SQLCMD输出

use*_*159 10 sql sql-server powershell sqlcmd

我使用下面的命令行来使用SQLCMD运行SQL查询

sqlcmd -S Server -Q "select top 100 * From people" -d people -t 10 
Run Code Online (Sandbox Code Playgroud)

该表有20列,当我看输出命令行窗口包装文本并使其难以阅读.

我希望我的结果显示方式与SQL Server Management Studio中显示的结果相同(格式正确).我不是在寻找任何网格,但是我需要在第1行显示所有列,并在下方正确显示结果.

提前致谢.

Sha*_*tin 9

回答

我们可以设置每列的宽度.

C:/> sqlcmd -S my_server

> :setvar SQLCMDMAXVARTYPEWIDTH 30
> :setvar SQLCMDMAXFIXEDTYPEWIDTH 30
> SELECT * from my_table
> go
Run Code Online (Sandbox Code Playgroud)

我们也可以这样设置:sqlcmd -S my_server -y 30 -Y 30.

细节

SQLCMDMAXVARTYPEWIDTH(-y)

它限制为大型可变长度数据类型返回的字符数

SQLCMDMAXFIXEDTYPEWIDTH(-Y)

限制为以下数据类型返回的字符数

注意:设置-y具有严重的性能影响.

请参阅https://docs.microsoft.com/en-us/sql/tools/sqlcmd-utility


Kla*_*ark 5

由于控制台窗口,通常会出现格式问题。一种解决方案是输出到文件并使用记事本/您最喜欢的编辑器:

sqlcmd -S myServer -d myDB -E -Q "select top 100 * From people" 
     -o "output.txt"
Run Code Online (Sandbox Code Playgroud)