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

PowerShell正则处理:如何仅去除CSV多余引号保留必要引号?

解决ConvertTo-Csv导致的多余双引号问题

我懂你的困扰——SQL查询已经给字符串字段加了必要的引号,结果经过ConvertTo-Csv处理后,原来的引号被转义成成对的双引号,输出格式变得乱糟糟的。别担心,只需要调整替换逻辑就能轻松搞定。

先看修改后的完整脚本:

Invoke-Sqlcmd -ServerInstance SQLSrv01 `
-Database MyDatabase `
-InputFile "c:\temp\MyQuery.sql" | `
ConvertTo-Csv -NoTypeInformation -Delimiter "," | `
Select-Object -Skip 1 | `
ForEach-Object { $_ -replace '""', '"' } | `
Out-File "C:\temp\test.csv" -Force -Encoding UTF8

关键修改点说明:

  • 你原来脚本里的% {$_ -replace '', ""}是无效操作,我们把它替换成了ForEach-Object { $_ -replace '""', '"' }。
  • 原因很直接:ConvertTo-Csv遵循CSV规范,会把字段内部的双引号转义为两个连续的双引号("")。我们的替换逻辑就是把这些转义后的双引号还原成单个双引号("),这样既保留了每个字段外围的必要引号,又去掉了多余的转义引号。

举个实际转换的例子:

  • SQL输出的原始字段:"George Burns"
  • 经过ConvertTo-Csv处理后:"""George Burns"""(对应你看到的""George Burns"",属于显示层面的小差异)
  • 替换后最终效果:"George Burns",完全符合你的需求。

如果之后遇到更复杂的CSV场景(比如字段包含逗号、换行符),这个替换逻辑依然适用,因为它只针对CSV规范里的转义双引号处理,不会破坏字段的整体结构。

内容的提问来源于stack exchange,提问作者Björn H. Sandvik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:44:50