STL_LOAD_ERRORS
显示所有 Amazon Redshift 加载错误的记录。
STL_LOAD_ERRORS 包含所有 Amazon Redshift 加载错误的历史记录。有关可能的加载错误和说明的全面列表,请参阅加载错误参考。
在您查询 STL_LOAD_ERRORS 以了解有关错误的一般信息后,可查询 STL_LOADERROR_DETAIL 以获取其他详细信息,如发生解析错误的准确的数据行和列。
STL_LOAD_ERRORS 对所有用户可见。超级用户可以查看所有行;普通用户只能查看其自己的数据。有关更多信息,请参阅 系统表和视图中的数据可见性。
注意
STL_LOAD_ERRORS 仅包含在主集群上运行的查询。它不包含在并发扩展集群上运行的查询。要访问在主集群和并发扩展集群上运行的查询,我们建议您使用 SYS 监控视图 SYS_LOAD_ERROR_DETAIL。SYS 监控视图中的数据经过格式化处理,便于使用和理解。
表列
列名称 | 数据类型 | 描述 |
---|---|---|
userid | integer | 生成该条目的用户 ID。 |
slice | integer | 发生错误的切片。 |
tbl | integer | 表 ID。 |
starttime | timestamp | 加载的开始时间(采用 UTC 表示)。 |
session | integer | 执行加载的会话的会话 ID。 |
query | integer | 查询 ID。查询列可用于连接其他系统表和视图。 |
filename | character(256) | 加载的输入文件的完整路径。 |
line_number | bigint | 加载文件中的错误所在的行号。对于 JSON 中的 COPY,这是存在错误的 JSON 对象的最后一行的行号。 |
colname | character(127) | 存在错误的字段。 |
type | character(10) | 字段的数据类型。 |
col_length | character(10) | 列长度(如果适用)。当数据类型具有限制长度时填充此字段。例如,对于数据类型为“character(3)”的列,此列将包含值“3”。 |
position | integer | 字段中的错误的位置。 |
raw_line | character(1024) | 包含错误的原始加载数据。加载数据中的多字节字符替换为句点。 |
raw_field_value | char(1024) | 字段“colname”的预解析值,可导致解析错误。 |
err_code | integer | 错误代码。 |
err_reason | character(100) | 有关错误的说明。 |
is_partial | integer | 值,如果为真 (1) 表示在 COPY 操作期间输入文件被拆分为范围。如果此值为假 (0),则不会拆分输入文件。 |
start_offset | bigint | 值,如果在 COPY 操作期间拆分输入文件,则表示拆分的偏移值(以字节为单位)。如果文件中的行号未知,则行号为 -1。如果文件未拆分,则此值为 0。 |
copy_job_id | bigint | 复制作业标识符。0 表示没有作业标识符。 |
示例查询
以下查询将 STL_LOAD_ERRORS 联接到 STL_LOADERROR_DETAIL 以查看最近加载期间发生的错误的详细信息。
select d.query, substring(d.filename,14,20), d.line_number as line, substring(d.value,1,16) as value, substring(le.err_reason,1,48) as err_reason from stl_loaderror_detail d, stl_load_errors le where d.query = le.query and d.query = pg_last_copy_id(); query | substring | line | value | err_reason -------+-------------------+------+----------+---------------------------- 558| allusers_pipe.txt | 251 | 251 | String contains invalid or unsupported UTF8 code 558| allusers_pipe.txt | 251 | ZRU29FGR | String contains invalid or unsupported UTF8 code 558| allusers_pipe.txt | 251 | Kaitlin | String contains invalid or unsupported UTF8 code 558| allusers_pipe.txt | 251 | Walter | String contains invalid or unsupported UTF8 code
以下示例结合使用 STL_LOAD_ERRORS 和 STV_TBL_PERM 来创建新视图,然后使用该视图来确定在将数据加载到 EVENT 表中时发生的错误:
create view loadview as (select distinct tbl, trim(name) as table_name, query, starttime, trim(filename) as input, line_number, colname, err_code, trim(err_reason) as reason from stl_load_errors sl, stv_tbl_perm sp where sl.tbl = sp.id);
接下来,以下查询实际返回在加载 EVENT 表时发生的最后一个错误:
select table_name, query, line_number, colname, starttime, trim(reason) as error from loadview where table_name ='event' order by line_number limit 1;
查询返回 EVENT 表发生的最后一个加载错误。如果未发生任何加载错误,则查询返回零行。在此示例中,查询返回一个错误:
table_name | query | line_number | colname | error | starttime ------+-----+----+----+--------------------------------------------------------+---------------------- event | 309 | 0 | 5 | Error in Timestamp value or format [%Y-%m-%d %H:%M:%S] | 2014-04-22 15:12:44 (1 row)
在 COPY 命令自动拆分大的、未压缩的、以文本分隔的文件数据以促进并行化的情况下,line_number、is_partial 和 start_offset 列显示与拆分有关的信息。(在原始文件中行号不可用的情况下,行号可能是未知的。)
--scan ranges information SELECT line_number, POSITION, btrim(raw_line), btrim(raw_field_value), btrim(err_reason), is_partial, start_offset FROM stl_load_errors WHERE query = pg_last_copy_id(); --result -1,51,"1008771|13463413|463414|2|28.00|38520.72|0.06|0.07|NO|1998-08-30|1998-09-25|1998-09-04|TAKE BACK RETURN|RAIL|ans cajole sly","NO","Char length exceeds DDL length",1,67108864