sqlcmd中-W与-y/-Y互斥:如何导出带表头的完整记录?
解决sqlcmd导出含表头完整记录的问题
针对你遇到的-W与-y0互斥,且单独使用无法同时满足完整记录和表头的问题,提供以下几种可行方案:
方案一:用分隔符替代-W的去空格效果,保留表头与完整字段
使用-s指定字段分隔符(如逗号、制表符),既可以避免列间多余空格,又能配合-y0保留完整字段,同时sqlcmd默认会输出表头:
sqlcmd -S [Server_Name] -U [User_Name] -P [Password] -d [DB_Name] -y0 -s "," -Q "select test_desc from Test0" 1>>Result.txt
如果需要无分隔符但去除字段本身的末尾空格,可以在查询中处理字段:
sqlcmd -S [Server_Name] -U [User_Name] -P [Password] -d [DB_Name] -y0 -Q "select RTRIM(test_desc) as test_desc from Test0" 1>>Result.txt
方案二:手动拼接表头与数据
通过UNION ALL将表头行和数据行合并,确保在使用-y0时能同时输出表头和完整记录:
sqlcmd -S [Server_Name] -U [User_Name] -P [Password] -d [DB_Name] -y0 -Q "SELECT 'test_desc' AS test_desc UNION ALL SELECT test_desc FROM Test0" 1>>Result.txt
注意:如果test_desc是非字符串类型,需要将其转换为字符串,例如:
sqlcmd -S [Server_Name] -U [User_Name] -P [Password] -d [DB_Name] -y0 -Q "SELECT 'test_desc' AS test_desc UNION ALL SELECT CAST(test_desc AS VARCHAR(MAX)) FROM Test0" 1>>Result.txt
方案三:检查表头显示设置
如果单独使用-y0时缺失表头,确认命令中是否添加了-h -1参数(该参数会隐藏表头),去掉该参数后,sqlcmd默认会输出查询的表头。
内容的提问来源于stack exchange,提问作者Yuvaraj
相关产品推荐
相关产品推荐

