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

PostgreSQL 12中COPY FROM无法用反斜杠转义CSV逗号分隔符

PostgreSQL 12 COPY导入CSV时反斜杠转义逗号无效的解决办法

问题原因

PostgreSQL的CSV导入模式遵循RFC 4180标准,该标准规定:字段内若包含分隔符(此处为逗号),需用双引号包裹字段,而非通过反斜杠转义。即便手动指定ESCAPE '\',CSV模式下该参数仅用于转义双引号(比如字段内的双引号需写成""或\"),无法识别反斜杠转义的逗号,最终导致导入失败。

解决方案

方案1:修改CSV文件(推荐,符合标准)

将包含逗号的字段用双引号包裹,替换原文件中的\,为直接保留逗号并加引号。例如:

  • 原内容:abc\,def,123
  • 修改后:"abc,def",123

之后使用你最初的COPY命令即可正常导入:

COPY myTable  
    FROM '/tmp/myTest.csv'
    WITH CSV HEADER DELIMITER ',' 
;

方案2:改用TEXT模式导入(无需修改文件)

如果不想调整文件格式,切换到PostgreSQL的TEXT导入模式,该模式支持反斜杠转义分隔符,命令如下:

COPY myTable  
    FROM '/tmp/myTest.csv'
    WITH TEXT HEADER DELIMITER ',' ESCAPE '\'
;

注意:TEXT模式对表头的处理逻辑和CSV模式一致,需确保表头行无转义异常。

内容的提问来源于stack exchange,提问作者Guasqueño

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 08:20:06