Redshift COPY - 无错误,0记录成功加载

时间:2015-07-20 19:41:01

标签: csv amazon-s3 amazon-redshift

我正在尝试从S3存储桶将CSV文件复制到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,

2 个答案:

答案 0 :(得分:3)

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

id123,

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

对于从Windows环境创建的某些文件,我发生了这种情况。

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

答案 1 :(得分:0)

我重复了你的指示,它运作得很好:

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

这导致:

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

所以,你的命令没有明显的错误。

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