Sqlcmd使用SQL Server存储过程将数据导出到csv
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sqlcmd使用SQL Server存储过程将数据导出到csv相关的知识,希望对你有一定的参考价值。
当我在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
答案
您可以再添加一个参数以从生成的csv文件中删除标题。
-h-1 removes column name headers from the result
-h标头指定要在列标题之间打印的行数。默认值是每组打印一次标题查询结果。此选项设置sqlcmd脚本变量SQLCMDHEADERS。使用-1指定不打印标题。任何无效的值导致sqlcmd生成错误消息,并且然后退出。
以上是关于Sqlcmd使用SQL Server存储过程将数据导出到csv的主要内容,如果未能解决你的问题,请参考以下文章
使用 SQLCMD 执行 MS SQL Server (*.sql) 脚本备份还原操作有啥问题?