2016-07-03 8 views
0

SQLCMDを使用してSQL Serverデータベースで実行しているクエリがあります。データの制限なしで長いテキストフィールドを取得するために、私は-y0フラグを使用しています。-yフラグを使用してSQLCMDヘッダーとデータを取得する方法

残念ながら、-y0フラグを使用すると、クエリのヘッダーが消え、クエリだけがデータを返します。私は同様にクエリからヘッダを受け取りたい。 1つのヘッダのクエリおよびデータのための別の、しかし-y0フラグを実行するために

sqlcmd -Q "select top 0 * from (select * from sales) as _; select * from sales;" -y0 -S "127.0.0.1,1433" -o output_file.csv 

は、最初のクエリに影響を与え

は、クエリが select * from sales;であることを考えると、私はこのような何かを考えましたas

私は、sqlcmdを1回だけ実行するだけで解決策を見つけたいと思います。 すべてのアイデア?

答えて

0

あなたが最初のクエリでやっている何のための典型的な方法は、WHERE句は常にfalseにすることです:

WHERE 1 = 0 

しかし、それは全く-y0に影響するかどうかはわかりません。あなたは2つの実行を行う場合

、あなたはこのような何かを行うことができます。

Invoke-SqlCmd -Server '127.0.0.1' -Database $Database -MaxCharLength ([int32]::MaxValue) ` 
    -Query "select * from sales;" | ` 
    Export-Csv -NoTypeInformation -Path output_file.csv; 
:個人的に

sqlcmd -Q "select * from sales where 1 = 0;" -S "127.0.0.1,1433" -o output_file_hdr.csv 
sqlcmd -Q "select * from sales;" -y0 -S "127.0.0.1,1433" -o output_file_data.csv 
copy /A output_file_hdr.csv + output_file_data.csv output_file.csv 
del output_file_hdr.csv 
del output_file_data.csv 

を、しかし、私はおそらくPowerShellののInvoke-Sqlcmdsqlcmd.exe場合ふらちなさ使用します

関連する問題