使用 COPY 将数据上传到 RedShift

Posted

技术标签:

【中文标题】使用 COPY 将数据上传到 RedShift【英文标题】:Uploading data to RedShift using COPY 【发布时间】:2015-12-27 16:25:01 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

如果字符串有一个开始的单引号或双引号但没有相应的结束标记,则 COPY 命令无法加载该行并返回错误。

有一点是肯定的:removequotes 肯定不是您要找的。​​p>

其次,你有什么选择?

    如果您可以控制预处理 S3 文件,请考虑使用 escape 选项。根据documentation,

指定此参数时,输入数据中的反斜杠字符(\)被视为转义字符。

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

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

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

【讨论】:

感谢@ketan,最终我通过双引号解决了这个问题。我还有另一个问题:我有新线的价值观。 RedShift 有什么办法可以解决这个问题? 您可以尝试在换行符之前使用“转义”和反斜杠吗?

以上是关于使用 COPY 将数据上传到 RedShift的主要内容,如果未能解决你的问题,请参考以下文章

使用雪花连接器和 COPY INTO 功能将 csv 上传到雪花时如何指定分隔符

linux如何将文件上传到多台服务器上

windows系统通过CMD将文件copy到远程电脑

使用 COPY 命令将数据从 JSON 文件复制到 Redshift

Hadoop及其HA搭建

Hadoop及其HA搭建