2016-07-03 44 views
0

我有一個查詢,我正在通過SQLCMD在我的SQL Server數據庫上運行。爲了獲得沒有任何數據限制的長文本字段,我使用了-y0標誌。如何使用-y標誌獲取SQLCMD標題和數據

不幸的是,當使用-y0標誌時,我的查詢標題消失,查詢只返回數據。我也想從查詢中接收標題。

鑑於查詢select * from sales;,我想過做這樣的事情:

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

爲了運行的頭一個查詢,另一個用於數據,但-y0標誌影響第一查詢as

我想找到一個只涉及一次sqlcmd執行的解決方案。 任何想法?

回答

0

爲你在第一個查詢做什麼,典型的方法是使WHERE子句始終爲假:

WHERE 1 = 0 

但我不知道這是否會影響-y0可言。

如果做兩次執行,你可以做這樣的事情:

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-Sqlcmd如果sqlcmd.exe行爲不正常:

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