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

Redshift COPY - No Errors, 0 Record(s) Loaded Successfully

我正在尝试将 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.

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

Table定义:

CREATE TABLE temp ("id" BIGINT);

CSV 数据:

id
123,

我重复了您的说明,效果很好:

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

这导致:

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

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

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

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

id123,

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

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

我想有一件事要记住,CSV 不是标准,更像是一种约定,不同的 products/vendors 对 csv 文件创建有不同的实现。