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

Redshift UNLOAD命令双引号被转义为双对引号,如何输出单对双引号包裹的内容

Redshift UNLOAD命令导出CSV双引号转义问题解决方案

问题原因

你遇到的现象是Redshift UNLOAD的标准CSV转义规则导致的:当你在UNLOAD参数中指定CSV选项时,Redshift默认会将字段值中包含的双引号(")自动转义为两个连续的双引号(""),这是标准RFC 4180 CSV格式的默认转义规则,不是异常错误。

解决方案

有两种常用方案可以实现你要的单个双引号包裹内容的输出效果:

方案1:关闭CSV模式,手动构造输出格式

如果你的字段内容中没有逗号、换行等需要CSV模式自动处理的特殊字符,可以直接移除CSV参数,UNLOAD就不会触发自动双引号转义逻辑,你在查询中拼接的双引号会原样输出。
参考命令:

UNLOAD($$ select '"Jane"' as name $$)
TO 's3://s3-bucket/test_' 
IAM_ROLE 'arn:aws:iam::xxxxxx:role/xxxxxx' 
HEADER 
DELIMITER ',' 
ALLOWOVERWRITE

方案2:保留CSV模式,修改默认引用符

如果你需要保留CSV模式自动处理逗号、换行等特殊字符的能力,可以通过QUOTE参数指定一个你的业务数据中不会出现的字符作为CSV的默认引用符,这样原字段中的双引号就不会被识别为需要转义的引用字符,会原样保留。
参考命令(指定单引号作为引用符为例):

UNLOAD($$ select '"Jane"' as name $$)
TO 's3://s3-bucket/test_' 
IAM_ROLE 'arn:aws:iam::xxxxxx:role/xxxxxx' 
HEADER 
CSV 
DELIMITER ',' 
QUOTE AS ''''
ALLOWOVERWRITE

如果你的数据中也存在单引号,可以替换为其他罕见字符(比如CHR(1)这类不可见控制字符)作为QUOTE值即可。

注意事项

如果选择方案1,需要自行确保字段内容中没有你指定的分隔符(这里是逗号),否则会出现CSV列错位的问题,这类场景更推荐使用方案2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:18:02