首页 > 解决方案 > 从 s3 存储桶复制到 redshift 我在 stl_load_errosrs 的 raw_line 中收到系统消息

问题描述

我在 s3 存储桶中有一个制表符分隔的文本文件,我想将其上传到 redshift。

我的红移查询如下所示:

COPY rk_test_tab
    from 's3://my_bucket/my_file'
    iam_role 'arn:aws:iam::XXX:role/XXX'
    IGNOREHEADER 1
    BLANKSASNULL
    EMPTYASNULL
    MAXERROR 10
    DELIMITER '\t'
;

通过 Python 读取的数据文件中的原始行如下所示:

b'1008498338\t1.0\t1\t1\tCBDT\n'

这失败并显示消息Load into table 'rk_test_tab' failed. Check 'stl_load_errors' system table for details.

当我查看stl_load_errorsraw_line字段时非常奇怪:( [GC Worker Start (ms): Min: 430.9, Avg: 430.9, Max: 431.0, Diff: 0.2] 仔细检查我的文件中没有这样的行)

err_reason给出Delimiter not found为。

如果我删除该IGNOREHEADER 1行,我会收到一个错误,因为我的标题与预期的数据字段类型raw_line不匹配,但至关重要的是它与文件中的匹配,因此 s3 存储桶中的文件正在通过。

所以我的问题是:Redshift 试图读取看起来像系统信息消息(垃圾收集?)的东西可能出了什么问题。

标签: amazon-s3amazon-redshift

解决方案


推荐阅读