Redshift COPY命令如何指定ESCAPE与QUOTE为双引号并加载文件?
解决Redshift COPY加载特殊格式CSV文件的问题
针对你遇到的情况,核心问题是源文件的引号转义规则和Redshift默认CSV模式的规则不匹配,同时需要让Redshift正确识别字段边界(避免把字段内的逗号当成分隔符)。可以通过显式指定QUOTE、DELIMITER和ESCAPE参数解决,无需依赖CSV选项:
正确的COPY命令
根据你源文件的引号转义方式,选择对应的命令:
情况1:源文件用双引号本身转义字段内的引号(即字段内的"写成"")
COPY my_table FROM 'my_s3_file' credentials 'my_creds' DELIMITER ',' QUOTE '"' ESCAPE '"' IGNOREHEADER 1 ACCEPTINVCHARS;
情况2:源文件用反斜杠转义字段内的引号(即字段内的"写成\")
COPY my_table FROM 'my_s3_file' credentials 'my_creds' DELIMITER ',' QUOTE '"' ESCAPE '\' IGNOREHEADER 1 ACCEPTINVCHARS;
说明
QUOTE '"':指定双引号作为字段的边界标记,确保字段内的逗号被识别为字段内容,而非分隔符。ESCAPE参数:必须和源文件实际的引号转义规则完全匹配,告诉Redshift如何解析字段内的引号。- 移除
CSV选项后,显式定义所有格式参数,避免Redshift使用默认CSV规则引发格式冲突。
内容的提问来源于stack exchange,提问作者Sarah T
相关产品推荐
相关产品推荐

