找不到Redshift COPY命令分隔符

Eri*_*ing 29 amazon-redshift

我正在尝试将一些文本文件加载到Redshift.除最终行值之外,它们以制表符分隔.这导致分隔符未找到错误.我只看到一种在COPY语句中设置字段分隔符的方法,而不是设置行分隔符的方法.任何不涉及处理我的所有文件以在每行末尾添加选项卡的想法?

谢谢

Tom*_*icz 45

我认为问题不<tab>在于行尾的缺失.您确定所有行都有正确的字段数吗?

运行查询:

select le.starttime, d.query, d.line_number, d.colname, d.value,
le.raw_line, le.err_reason    
from stl_loaderror_detail d, stl_load_errors le
where d.query = le.query
order by le.starttime desc
limit 100
Run Code Online (Sandbox Code Playgroud)

获取完整的错误报告.它将显示带有错误的文件名,错误的行号和错误详细信息.

这将有助于找出问题所在.


Mad*_*llo 39

如果您的行的列少于预期,则可以获取分隔符未找到错误.如果最后一列为空,则某些CSV生成器可能只在末尾输出单引号.

要解决此问题,您可以在Redshift复制选项上使用FILLRECORD.


Vzz*_*arr 5

据我了解,错误消息Delimiter not found也可能是由于未正确指定COPY命令引起的,特别是未指定数据格式参数https://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html

就我而言,我尝试使用以下表达式加载 Parquet 数据:

COPY my_schema.my_table
FROM 's3://my_bucket/my/folder/'
IAM_ROLE 'arn:aws:iam::my_role:role/my_redshift_role'
REGION 'my-region-1';
Run Code Online (Sandbox Code Playgroud)

Delimiter not found在查看系统表时收到错误消息stl_load_errors。但指定我正在以这种方式处理表达式中的 Parquet 数据:

COPY my_schema.my_table
FROM 's3://my_bucket/my/folder/'
IAM_ROLE 'arn:aws:iam::my_role:role/my_redshift_role'
FORMAT AS PARQUET;
Run Code Online (Sandbox Code Playgroud)

解决了我的问题,我能够正确加载数据。