Как отформатировать вывод SQLCMD

Я использую приведенную ниже командную строку для запуска SQL-запроса с использованием SQLCMD

sqlcmd -S Server -Q "select top 100 * From people" -d people -t 10 

Таблица состоит из 20 столбцов, и когда я смотрю на окно командной строки вывода, она переносит текст и затрудняет его чтение.

Я хочу, чтобы мои результаты отображались так же, как они отображаются в SQL Server Management Studio (правильно отформатированы). Я не ищу сеток, но мне нужно, чтобы все мои столбцы отображались в строке 1, а результаты должным образом отображались ниже.

Заранее спасибо.

Ответ 1

Ответ

Мы можем установить ширину каждого столбца.

C:/> sqlcmd -S my_server

> :setvar SQLCMDMAXVARTYPEWIDTH 30
> :setvar SQLCMDMAXFIXEDTYPEWIDTH 30
> SELECT * from my_table
> go

Мы также можем установить его так: sqlcmd -S my_server -y 30 -Y 30.

Подробнее

SQLCMDMAXVARTYPEWIDTH (-y)

Он ограничивает количество символов, возвращаемых для типа данных большой переменной длины

SQLCMDMAXFIXEDTYPEWIDTH (-Y)

Ограничивает количество символов, возвращаемых для следующих типов данных

Примечание: настройка -y имеет серьезные последствия для производительности.

Видеть https://docs.microsoft.com/en-us/sql/tools/sqlcmd-utility

Ответ 2

Проблемы с форматированием обычно появляются из-за окна консоли. Одним из решений является вывод в файл и использование блокнота/вашего любимого редактора:

sqlcmd -S myServer -d myDB -E -Q "select top 100 * From people" 
     -o "output.txt"

Ответ 3

Вот как я изолировал скаляр.

sqlcmd -S xxx.xxx.xxx.xxx,xxxxx -d MyDb -U myUser -P MyPassword -h -1 -W -Q "set NOCOUNT ON; select a from b where b.id='c'"