【问题标题】:COPY from S3 to Redshift not recognizing newline从 S3 复制到 Redshift 不识别换行符
【发布时间】:2015-06-29 19:38:12
【问题描述】:

我正在尝试从 S3 存储桶向 Redshift PostgreSQL 表运行 COPY 命令,但出现以下错误(在 stl_load_errors 中):

err_code: 1207 

err_reason: Invalid digit, Value '2', Pos 3, Type: Short 

raw_field_value: 
2
2/28/15

该文件有 2 行:

2/28/15,手机,Android,0,1,3,2,2

2/28/15,手机,Android,0,4,1,2,2

CREATE TABLE 代码是:

create table aggregate_table( date date, variable varchar(15),source varchar(15), prepaid smallint, direction smallint, total smallint, carrier smallint, carrier_group smallint)

似乎换行符未被识别,并试图将第一行的结尾和第二行的开头作为一个值读取。我尝试过使用delimiter ','escape,但似乎没有任何效果。

感谢您的帮助!

编辑:这是 COPY 命令(我也试过用 escape 结尾)

COPY aggregate_table FROM 's3://path_to_file.csv'  CREDENTIALS 'aws_access_key_id=XXXX;aws_secret_access_key=XXXXX'  CSV delimiter ','  DATEFORMAT AS 'MM/DD/YY'; 

【问题讨论】:

    标签: postgresql amazon-s3 amazon-redshift


    【解决方案1】:

    您需要将DATEFORMAT AS 'MM/DD/YY' 添加到您的COPY 命令中。否则 redshift 无法正确解析第一列中的日期,正如它所期望的 YYYY-MM-DD

    请参阅http://docs.aws.amazon.com/redshift/latest/dg/r_DATEFORMAT_and_TIMEFORMAT_strings.html 了解更多详情。

    【讨论】:

    • 感谢@quardome,但我遇到了同样的错误
    • 我相信您也需要添加一个 CSV 选项。
    • 我也试过了,不幸的是遇到了同样的错误
    • @zebrainatree,我刚刚验证它对我来说端到端有效(创建表,上传到 s3,复制)。全部使用您上面的确切命令。
    【解决方案2】:

    @quarterdome 感谢您与我一起解决这个问题!在你指出它有效之后,我又从头到尾尝试了一遍。事实证明,当我保存没有 .csv 扩展名的文件时,它起作用了! -

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 1970-01-01
      • 2013-03-20
      相关资源
      最近更新 更多