有没有办法在加载数据时为Redshift copy命令指定多个分隔符。
我的数据文件格式如下: -
1 | ab | cd | EF
2 | gh | ij | KL
我正在使用这样的命令: -
COPY MY_TBL
FROM 's3://s3-file-path'
iam_role 'arn:aws:iam::ddfjhgkjdfk'
manifest
IGNOREHEADER 1
gzip delimiter '|';
字段由|分隔并使用换行符分隔记录。如何将此数据复制到Redshift中。因为上面的查询给了我一个未找到分隔符的错误
答案 0 :(得分:0)
答案 1 :(得分:0)
上面的错误表明数据中的某些内容导致COPY命令失败。这可能是许多事情,从文件编码到那里的一些时髦数据。我找不到"未找到的分隔符"最近的错误,结果是ESCAPE参数与我的数据中的尾部反斜杠相结合,这阻止了我的分隔符(\ t)被拾取。
幸运的是,您可以采取一些步骤来帮助您缩小范围:
stl_load_errors - 此系统表包含有关Redshift在COPY操作期间记录的任何错误的详细信息。这应该能够识别数据文件中导致问题的行号。
NOLOAD - 允许您运行复制命令而不实际将任何数据加载到Redshift。这将执行COPY ANALYZE操作,并将突出显示 stl_load_errors 表中的任何错误。
FILLRECORD - 这允许Redshift“填充”#34;它在输入数据中看到的任何列都丢失了。这主要是为了处理任何不合格的数据文件,但在帮助诊断可能导致未找到分隔符的问题时非常有用。错误。这样您就可以将数据加载到Redshift,然后在数据库中查询以查看列的开始位置。
从您发布的示例中,您的设置看起来不错,但显然这不是整个图片。上面的选项可以帮助您缩小有问题的行,以帮助解决问题。