使用COPY将数据上载到RedShift

时间:2015-12-27 16:25:01

标签: copy delimiter amazon-redshift

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

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

我收到此错误: 定界值缺少最终报价

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

1 个答案:

答案 0 :(得分:4)

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

  

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

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

其次,你有什么选择?

  1. 如果您正在控制S3文件的预处理,请考虑使用escape选项。根据{{​​3}},
  2.   

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

    所以S3中的输入行应该改为:

      

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

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