使用 COPY 将数据上传到 RedShift

Uploading data to RedShift using COPY

我正在尝试使用 COPY 命令将数据上传到 RedShift。

这一行: 4072462|10013868|默认|2015-10-14 21:23:18.0|0|'A=0

我收到此错误: 分隔值缺少结束引号

这是复制命令: 复制测试 来自 's3://test/test.gz' credentials 'aws_access_key_id=xxx;aws_secret_access_key=xxx' removequotes 转义 gzip

首先,我希望您知道为什么会出现上述错误:其中一个列值中有一个单引号。在使用 removequotes 选项时,Redshift documentation 明确指出:

If a string has a beginning single or double quotation mark but no corresponding ending mark, the COPY command fails to load that row and returns an error.

有一件事是肯定的:removequotes肯定不是你要找的。

其次,你有什么选择?

  1. 如果预处理 S3 文件在您的控制范围内,请考虑使用 escape 选项。根据 documentation

When this parameter is specified, the backslash character (\) in input data is treated as an escape character.

因此您在 S3 中的输入行应更改为:

4072462|10013868|default|2015-10-14 21:23:18.0|0|\'A=0

  1. 看看 CSV DELIMITER '|' 是否适合您。检查文档 here.