Amazon Redshift COPY 命令中的转义分隔符

Fir*_*ame 6 amazon-s3 amazon-web-services amazon-redshift

我正在将数据从 Amazon S3 提取到 Amazon Redshift 中的表中。该表包含各种列,其中某些列数据可能包含特殊字符。

copy 命令有一个名为的选项Delimiter,我们可以在其中指定分隔符,同时将数据拉入表中。

问题是 2 倍 -

当我(unload command)使用分隔符导出到 S3 时 - 比如说,- 它工作正常,但是当我尝试从 S3 导入到 Redshift 时,问题会蔓延,因为某些列包含 ',' 运算符,复制命令将其误解为分隔符并引发错误。

我尝试了各种分隔符,但我的表中的数据似乎包含导致上述问题的某种或其他类型的特殊字符。

我什至尝试使用多个分隔符卸载 - 就像#%或者~,但是当使用复制命令从 s3 加载时 - 不支持双分隔符。

任何解决方案?

我认为可以使用分隔符进行转义,\但由于某种原因也不起作用,或者我可能没有使用正确的语法在复制命令中进行转义。

Joh*_*ein 0

如果分隔符出现在字段中,则将ADDQUOTES参数与UNLOAD命令一起使用:

在每个卸载的数据字段周围放置引号,以便 Amazon Redshift 可以卸载包含分隔符本身的数据值。

然后:

如果使用 ADDQUOTES,则在重新加载数据时必须在 COPY 中指定 REMOVEQUOTES。

流行的分隔符是管道字符 ( |),它在文本文件中很少见。