使用sqlcmd导出SQL Server数据至CSV时列标题缺失问题排查
问题原因与解决方法
为什么没有列标题?
你当前的sqlcmd命令未指定列标题的显示规则,默认情况下使用-o参数导出到文件时,sqlcmd不会自动输出列标题;另外SET NOCOUNT ON仅用于关闭查询执行后的行数统计提示,和列标题是否显示无关。
解决方法(保留-y0参数)
在命令中添加-h 1参数,该参数会让sqlcmd在数据开头显示一次列标题,同时-y0参数依然生效,避免超长varchar列被截断。
修改后的完整命令:
sqlcmd -y0 -h 1 -S server -d database -U username -P password -o C:\outfiles\data.csv -s ";" -Q "SET NOCOUNT ON; select field1, field2, field3 from tablex"
参数说明
-h 1:指定列标题仅在第一行数据前显示一次;若设置为-h -1则会完全隐藏列标题,这也是常见的导致标题缺失的原因。-y0:设置varchar类型字段的显示宽度为0,即完整输出超长列内容,避免截断。
内容的提问来源于stack exchange,提问作者Bera
相关产品推荐
相关产品推荐

