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

如何用COPY命令将含双引号字符串的CSV从S3导入Redshift?

解决Redshift COPY命令导入CSV时的「Invalid quote formatting for CSV」错误

你的问题根源在于源文件的引号格式不符合标准CSV规范(标准CSV要求字段内的双引号需用两个双引号转义,例如"Hello world ""people"""),导致Redshift解析时认为引号未正确闭合。以下是仅通过调整COPY命令参数解决的方案:

方案一:改用TEXT模式禁用引号解析

放弃CSV模式,使用TEXT模式并指定分隔符,同时设置一个不存在的字符作为QUOTE值,让Redshift将所有引号当作普通文本处理,不进行引号结构解析。

修改后的COPY命令:

COPY xxxx
FROM 'S3_BCT'
credentials 'xxxxxx'
TEXT EMPTYASNULL TIMEFORMAT AS 'auto'
DELIMITER ';'
QUOTE '\0'
TRUNCATECOLUMNS;

此方法会将"Hello world "people""完整作为字符串导入,若后续需要去除首尾引号,可通过UPDATE语句结合TRIM函数处理:

UPDATE xxxx SET your_column = TRIM(your_column, '"');

方案二:尝试ESCAPE参数适配非标准引号转义

如果必须保留CSV模式的特性,可尝试设置ESCAPE '"',让Redshift将双引号视为转义符,适配源文件中单个双引号转义内部引号的情况:

COPY xxxx
FROM 'S3_BCT'
credentials 'xxxxxx'
CSV EMPTYASNULL TIMEFORMAT AS 'auto'
DELIMITER ';'
QUOTE '"'
ESCAPE '"'
TRUNCATECOLUMNS;

注:此方案仅当源文件的引号逻辑是用双引号转义双引号时生效,若源文件确实存在未闭合的引号问题,此方法可能无法解决。

为什么之前的尝试无效

  • 使用QUOTE '"'是错误的:QUOTE参数需要指定实际的字符,而非HTML实体,正确的写法应为QUOTE '"'。
  • REMOVEQUOTES参数无法生效:该参数仅在引号格式正确的前提下去除首尾引号,当Redshift先遇到引号格式错误时,会直接触发解析失败,参数无法执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 18:30:34