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

MSSQL 2012使用BCP导出UTF-8格式CSV文件的解决方案咨询

解决SQL Server 2012用BCP导出UTF-8 CSV的问题

你碰到的这个报错完全是版本限制导致的——SQL Server 2012和配套的SQL Server Native Client 11.0确实不支持直接通过BCP使用65001(UTF-8)代码页,这个支持是从SQL Server 2016才正式加入的。不过不用慌,我们有几个靠谱的替代方案能帮你导出UTF-8格式的CSV文件:

方案一:先导出为UTF-16,再转码为UTF-8

BCP在SQL Server 2012里支持UTF-16(代码页1200),我们可以先导出成Unicode格式的文件,再用系统自带的工具转成UTF-8:

  1. 用BCP导出UTF-16的CSV:
bcp YourDatabase.dbo.YourTable out "C:\temp\unicode_output.csv" -S YourServerName -U YourUsername -P YourPassword -w -t "," -r "\n"

参数说明:

  • -w:指定用Unicode(UTF-16)格式导出
  • -t ",":设置字段分隔符为逗号
  • -r "\n":设置行分隔符为换行符
  1. 用PowerShell转码为UTF-8:
    打开PowerShell执行以下命令,就能把UTF-16文件转成UTF-8:
Get-Content "C:\temp\unicode_output.csv" -Encoding Unicode | Set-Content "C:\temp\utf8_output.csv" -Encoding UTF8

这个方法不需要额外安装工具,Windows系统自带PowerShell,操作起来很方便。

方案二:用SSIS(SQL Server Integration Services)导出

SQL Server 2012的SSIS支持直接导出UTF-8格式的文件,步骤如下:

  • 打开SQL Server Data Tools(SSDT)(要选和SQL Server 2012兼容的版本,比如SSDT 2012或2013)
  • 新建一个Integration Services项目,添加数据流任务
  • 在数据流里拖入OLE DB源,连接到你的SQL Server 2012数据库,选择要导出的表
  • 拖入平面文件目标,新建平面文件连接:
    • 设置文件保存路径,格式选择“分隔符”(对应CSV)
    • 在“常规”选项卡的“编码”下拉菜单里选择“UTF-8”
    • 配置字段分隔符为逗号,确认行分隔符设置正确
  • 完成字段映射后,运行SSIS包就能得到UTF-8格式的CSV文件了

方案三:用T-SQL生成文本后转码(可选)

如果不想用BCP或SSIS,也可以用T-SQL拼接CSV内容,然后导出到本地文件,再转码。比如用xp_cmdshell配合bcp或者直接生成文本,但这个方法需要开启xp_cmdshell(默认禁用),而且处理大量数据效率不如前两个方案,适合小批量数据导出。

注意事项

  • 转码前建议先导出小批量数据测试,确保国际字符没有乱码或丢失
  • 如果使用SSIS,要确认SSDT版本和SQL Server 2012兼容,避免出现兼容性问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:39:29