web-dev-qa-db-ja.com

SQLCMD出力をフォーマットする方法

以下のコマンドラインを使用して、SQLCMDを使用してSQLクエリを実行しています

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

テーブルには20列あり、出力コマンドラインウィンドウを見るとテキストが折り返され、読みにくくなっています。

結果をSQL Server Management Studio(適切にフォーマットされた)と同じように表示したい。グリッドを探していませんが、すべての列を行1に表示し、結果をその下に正しく表示する必要があります。

前もって感謝します。

11
user1550159

回答

各列の幅を設定できます。

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 を参照してください。

10
Shaun Luttin

通常、フォーマットの問題はコンソールウィンドウが原因で発生します。 1つの解決策は、ファイルに出力し、メモ帳/お気に入りのエディターを使用することです。

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

これが私がスカラーを分離した方法です。

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'" 
0
Bluebaron