这里是情况:
某些第三方将csv数据转储到S3存储桶中。我们要将这些数据加载到Redshift。由于我们无法控制发送给我们的数据的质量,因此我们必须考虑在COPY到Redshift期间发生一些错误的可能性。我们不想简单地忽略它们,因此我们正在寻找理解这些负载错误的方法。
到目前为止,这个想法是: 将MAXERROR设置为允许的最大数目,加载可以加载的内容,然后查看拒绝的行。后者可以通过查询Redshift的STL_LOAD_ERRORS和STL_LOADERROR_DETAIL表来完成。
这里的问题是这些表尽管存在属性STL_LOAD_ERRORS.raw_line,STL_LOAD_ERRORS.raw_field_value和STL_LOADERROR_DETAIL.value,但它们的大小限制为1024,而我们得到的列之一是一个巨大的JSON长度很容易达到20k +的字符串。而且,据我所知,这些错误表仅包含实际上导致问题的列上的信息,而不包含其他列(例如可以帮助识别不良行的主键列)上的信息。
所以我的问题是: 有没有办法告诉COPY将拒绝的行完全转储到某种类型的rejected_file中以供以后分析?