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

使用PowerShell的Export-Csv导出SQL Server数据时双引号变为问号

解决PowerShell导出SQL数据到CSV时双引号变为问号的问题

这个问题的核心原因是Export-Csv默认使用ASCII编码,当数据中包含ASCII编码范围外的字符(或特殊格式的引号)时,会被自动替换为问号。以下是几种直接有效的解决办法:

  • 方法1:给Export-Csv指定UTF-8编码
    修改原命令,添加-Encoding UTF8参数,确保导出时保留所有Unicode字符(包括双引号):

    Invoke-Sqlcmd -ServerInstance 'SQLSERVER' -Database "SQL" -Query "select * from Table" | 
      Export-Csv -Path "C:\Users\Desktop\Outquery.csv" -NoTypeInformation -Encoding UTF8
    
  • 方法2:导出无BOM的UTF-8格式(PowerShell 6+适用)
    如果你需要兼容非Windows系统的CSV文件,PowerShell 6及以上版本支持utf8NoBOM编码选项:

    Invoke-Sqlcmd -ServerInstance 'SQLSERVER' -Database "SQL" -Query "select * from Table" | 
      Export-Csv -Path "C:\Users\Desktop\Outquery.csv" -NoTypeInformation -Encoding utf8NoBOM
    
  • 方法3:用ConvertTo-Csv+Out-File替代Export-Csv
    如果Export-Csv的编码选项无法满足需求,可以先将数据转为CSV格式字符串,再用Out-File指定编码写入:

    $sqlData = Invoke-Sqlcmd -ServerInstance 'SQLSERVER' -Database "SQL" -Query "select * from Table"
    $sqlData | ConvertTo-Csv -NoTypeInformation | Out-File -Path "C:\Users\Desktop\Outquery.csv" -Encoding UTF8
    

执行上述任意一种方法后,导出的CSV文件中双引号就能正常显示,不会再被替换为问号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:10:31