You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用sqlcmd导出SQL Server表到CSV时单行拆多行问题求助

问题原因

SDESC字段值内部包含隐藏的换行符(\n或\r\n),sqlcmd导出时会直接输出这些换行符,导致CSV解析器将其识别为行分隔符,最终单条表记录被拆分成多行。

解决方法

方法1:替换字段内的换行符

如果不需要保留换行符,可通过SQL语句将字段中的换行符替换为空格或其他符号,避免行拆分:

sqlcmd -S EC2AMAZ-5UNBD90 -d miadmfggp_live -Q "SELECT REPLACE(REPLACE(SDESC, CHAR(10), ' '), CHAR(13), ' ') AS SDESC FROM dbo.pmdocs WHERE HMY=95613900;" -s "," -o "C:\pmdocs_ms_v1.csv" -E -y0
  • CHAR(10)对应换行符,CHAR(13)对应回车符,嵌套REPLACE可同时清理两种换行格式。

方法2:用双引号包裹字段(符合CSV规范)

如果需要保留字段内的换行符,按照CSV标准,需将包含换行的字段用双引号括起,同时转义字段内原有的双引号(替换为""):

sqlcmd -S EC2AMAZ-5UNBD90 -d miadmfggp_live -Q "SELECT '"' + REPLACE(SDESC, '"', '""') + '"' AS SDESC FROM dbo.pmdocs WHERE HMY=95613900;" -s "," -o "C:\pmdocs_ms_v1.csv" -E -y0

导出后,带换行的字段会被双引号包裹,Excel、Pandas等主流CSV工具会正确识别为单个字段,不会拆分行。

内容的提问来源于stack exchange,提问作者Yang L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:22:45