【问题标题】:Redshift COPY - No Errors, 0 Record(s) Loaded SuccessfullyRedshift COPY - 没有错误,0 条记录成功加载
【发布时间】:2015-07-20 19:41:01
【问题描述】:

我正在尝试将 CSV 文件从 S3 存储桶复制到 Redshift。当我执行命令时,我没有收到任何错误消息,但是加载不起作用。

命令:

COPY temp FROM 's3://<bucket-redacted>/<object-redacted>.csv'
CREDENTIALS 'aws_access_key_id=<redacted>;aws_secret_access_key=<redacted>'
DELIMITER ',' IGNOREHEADER 1;

回复:

Load into table 'temp' completed, 0 record(s) loaded successfully.

我试图通过系统表隔离问题,但没有迹象表明存在问题。

表定义:

CREATE TABLE temp ("id" BIGINT);

CSV 数据:

id
123,

【问题讨论】:

    标签: csv amazon-s3 amazon-redshift


    【解决方案1】:

    您的 csv 文件中的行结尾可能没有 unix 换行符,因此 COPY 命令可能会将您的文件视为:

    id123,

    假设您启用了 IGNOREHEADER 选项,并且文件中的行结尾不是 COPY 所期望的(我的假设基于过去的经验),文件内容将被视为一行,然后被跳过。

    我在 Windows 环境中创建的一些文件出现了这种情况。

    我想要记住的一件事是 CSV 不是标准,更多的是约定,不同的产品/供应商对 csv 文件的创建有不同的实现。

    【讨论】:

      【解决方案2】:

      我重复了你的指示,效果很好:

      • 首先,CREATE TABLE
      • 然后,LOAD(来自我自己的文本文件,仅包含您显示的两行)

      这导致:

      Code: 0 SQL State: 00000 --- Load into table 'temp' completed, 1 record(s) loaded successfully.
      

      所以,你的命令没有明显的问题。

      起初,我认为数据行末尾的逗号可能会导致 Amazon Redshift 认为存在无法映射到您的表的附加数据列,但它对我来说很好。尽管如此,您可以尝试删除逗号,或者创建一个额外的列来存储这个“空”值。

      【讨论】:

        猜你喜欢
        • 2020-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多