使用 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
肯定不是你要找的。
其次,你有什么选择?
- 如果预处理 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
- 看看
CSV DELIMITER '|'
是否适合您。检查文档 here.
我正在尝试使用 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
肯定不是你要找的。
其次,你有什么选择?
- 如果预处理 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
- 看看
CSV DELIMITER '|'
是否适合您。检查文档 here.