STL_LOADERROR_DETAIL - Amazon Redshift
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

STL_LOADERROR_DETAIL

显示使用 COPY 命令加载表时发生的数据解析错误的日志记录。为了节省磁盘空间,对于每个加载操作,每个节点切片最多记录 20 个错误。

在将数据行中的某个字段加载到表时,如果 Amazon Redshift 无法解析该字段,则会发生解析错误。例如,如果表列应为整数数据类型,而且数据文件包含该字段中的字母字符串,则它会导致解析错误。

在您查询 STL_LOAD_ERRORS 以了解有关错误的一般信息之后,请查询 STL_LOADERROR_DETAIL 以获取其他详细信息,如发生解析错误的准确的数据行和列。

STL_LOADERROR_DETAIL 视图包含所有数据列,包括解析错误发生的列及其之前的列。使用 VALUE 字段来查看实际已在此列(包括在发生此错误之前已正确解析的列)中解析的数据值。

此视图 对所有用户可见。超级用户可以查看所有行;普通用户只能看到自己的数据。有关更多信息,请参阅 Visibility of data in system tables and views

表列

列名称 数据类型 描述
userid integer 生成该条目的用户 ID。
slice integer 发生错误的切片。
session integer 执行加载的会话的会话 ID。
query integer 查询 ID。查询列可用于连接其他系统表和视图。
filename character(256) 加载的输入文件的完整路径。
line_number bigint 加载文件中的错误所在的行号。
field integer 存在错误的字段。
colname character(1024) 列名称。
character(1024) 字段的已解析数据值。(可能会截断。) 加载数据中的多字节字符将替换为句点。
is_null integer 解析的值是否为 null。
type character(10) 字段的数据类型。
col_length character(10) 列长度(如果适用)。当数据类型具有限制长度时填充此字段。例如,对于数据类型为“character(3)”的列,此列将包含值“3”。

示例查询

以下查询将 STL_LOAD_ERRORS 联接到 STL_LOADERROR_DETAIL 以查看加载 EVENT 表(表 ID 为 100133)时发生的解析错误的详细信息:

select d.query, d.line_number, d.value, le.raw_line, le.err_reason from stl_loaderror_detail d, stl_load_errors le where d.query = le.query and tbl = 100133;

以下示例输出显示已加载成功的列,包括存在错误的列。在此示例中,在第三个列中发生解析错误之前已成功加载两个列,第三个列中应为整数的字段不正确地解析为了字符串。由于该字段应为整数,因此它将字符串“aaa”(未初始化的数据)解析为了 null 并生成了解析错误。输出显示原始值、解析的值和错误原因:

query | line_number | value | raw_line | err_reason -------+-------------+-------+----------+---------------- 4 | 3 | 1201 | 1201 | Invalid digit 4 | 3 | 126 | 126 | Invalid digit 4 | 3 | | aaa | Invalid digit (3 rows)

当查询联接 STL_LOAD_ERRORS 和 STL_LOADERROR_DETAIL 时,它将显示数据行中每列的错误原因,这只是意味着该行中发生了错误。结果中的最后一行是发生解析错误的实际列。