当我在SQL Server中执行存储过程并将数据导出到.csv
(使用“另存结果为”)时,输出.csv
的格式非常好。
我的目标是以这种格式提取数据,并带有标题:
PK1,2005/010,#,Not Analysed,CVOI001,C Voice 001 Test Account,PI -Local,11/11/2019,-571.430,C,T00012
PK1,2005/010,#,Not Analysed,32400,Annual bonus,PI -Local,11/11/2019,571.430,D,T00012
但是,当我使用sqlcmd
从相同的存储过程中提取数据(目标是自动执行提取任务)时,格式非常不同,用“ ------”分隔标题和在字段中填充很多。抱歉,我无法发布标题,因为该帖子将超出字符数限制。
这是我的代码和当前输出。我有什么需要改变的吗?
sqlcmd -S SUNSERVER -E -Q "Exec SunSystemsData.[dbo].[z_UniFocusExtract] $(BUCode), $(LCode), $(TCodeNo), $(NoDayBack)"
-v BUCode='PK1' LCode='ANAL_T1' TCodeNo='2' NoDayBack='-100' -s "," -o "C:/Test/Test.csv"
PK1 ,2005/010,# ,Not Analysed ,CVOI001 ,C Voice 001 Test Account ,PI -Local ,11/11/2019 , -571.430,C ,T00012
PK1 ,2005/010,# ,Not Analysed ,32400 ,Annual bonus ,PI -Local ,11/11/2019 , 571.430,D ,T00012
答案 0 :(得分:0)
您可以再添加一个参数,以从生成的csv文件中删除标题。
-h-1 removes column name headers from the result
-h标头
指定要在列标题之间打印的行数。默认值是每组打印一次标题 查询结果。此选项设置sqlcmd脚本变量 SQLCMDHEADERS。使用-1指定不打印标题。任何 无效的值导致sqlcmd生成错误消息,并且 然后退出。
要除去列宽中多余的填充空间,请添加-W参数。我已经测试过了一切正常。
-W此选项从列中删除尾随空格。在准备要导出的数据时,将此选项与-s选项一起使用 到另一个应用程序。不能与-y或-Y选项一起使用。