如何使用-y标志获取SQLCMD标题和数据
问题描述:
我有一个查询,我正在通过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执行的解决方案。 任何想法?
答
为你在第一个查询做什么,典型的方法是使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;