

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# STL\_LOAD\_ERRORS
<a name="r_STL_LOAD_ERRORS"></a>

显示所有 Amazon Redshift 加载错误的记录。

STL\_LOAD\_ERRORS 包含所有 Amazon Redshift 加载错误的历史记录。有关可能的加载错误和说明的全面列表，请参阅[加载错误参考](r_Load_Error_Reference.md)。

在您查询 STL\_LOAD\_ERRORS 以了解有关错误的一般信息后，可查询 [STL\_LOADERROR\_DETAIL](r_STL_LOADERROR_DETAIL.md) 以获取其他详细信息，如发生解析错误的准确的数据行和列。

STL\_LOAD\_ERRORS 对所有用户可见。超级用户可以查看所有行；普通用户只能查看其自己的数据。有关更多信息，请参阅 [系统表和视图中的数据可见性](cm_chap_system-tables.md#c_visibility-of-data)。

**注意**  
STL\_LOAD\_ERRORS 仅包含在主预置集群上运行的查询。它不包含在并发扩展集群或无服务器命名空间上运行的查询。要访问在主集群、并发扩展集群和无服务器命名空间上运行的查询的解释计划，我们建议您使用 SYS 监控视图 [SYS\_LOAD\_ERROR\_DETAIL](SYS_LOAD_ERROR_DETAIL.md)。SYS 监控视图中的数据经过格式化处理，便于使用和理解。

## 表列
<a name="r_STL_LOAD_ERRORS-table-columns2"></a>


| 列名称  | 数据类型  | 描述  | 
| --- | --- | --- | 
| 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 表示没有作业标识符。 | 

## 示例查询
<a name="r_STL_LOAD_ERRORS-sample-queries2"></a>

以下查询将 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
```