

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

# 用于解决数据加载问题的系统表
<a name="system-tables-for-troubleshooting-data-loads"></a>

以下 Amazon Redshift 系统表可能有助于排查数据加载问题：
+ 查询 [STL\$1LOAD\$1ERRORS](r_STL_LOAD_ERRORS.md) 以发现在特定加载期间发生的错误。
+ 查询 [STL\$1FILE\$1SCAN](r_STL_FILE_SCAN.md) 以查看特定文件的加载时间或了解是否甚至读取了某个特定文件。
+ 查询 [STL\$1S3CLIENT\$1ERROR](r_STL_S3CLIENT_ERROR.md) 以查找有关从 Amazon S3 传输数据时遇到的错误的详细信息。

**查找和诊断加载错误**

1. 创建视图或定义返回有关加载错误的详细信息的查询。以下示例将 STL\$1LOAD\$1ERRORS 表联接到 STV\$1TBL\$1PERM 表以将表 ID 与实际表名称进行匹配。

   ```
   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);
   ```

1. 将 COPY 命令中的 MAXERRORS 选项设置为足够大的值，以使 COPY 能够返回有关您的数据的有用值。如果 COPY 遇到错误，则会出现一条错误消息，指示您参阅 STL\$1LOAD\$1ERRORS 表以了解详细信息。

1. 查询 LOADVIEW 视图以查看错误详细信息。例如：

   ```
   select * from loadview where table_name='venue';
   ```

   ```
     tbl   | table_name | query |         starttime          
   --------+------------+-------+----------------------------
    100551 | venue      | 20974 | 2013-01-29 19:05:58.365391 
   
   |     input      | line_number | colname | err_code |       reason
   +----------------+-------------+---------+----------+--------------------
   | venue_pipe.txt |           1 |       0 |     1214 | Delimiter not found
   ```

1. 根据视图返回的信息修复输入文件或加载脚本中的问题。要观察的一些典型加载错误包括：
   + 表中的数据类型与输入数据字段中的值不匹配。
   + 表中的列数与输入数据中的字段数不匹配。
   + 引号不匹配。Amazon Redshift 支持单引号和双引号；但是，必须适当平衡这些引号。
   + 输入文件中的日期/时间数据的格式不正确。
   + 输入文件中的值超出范围（对于数字列）。
   + 某个列的不同值的数量超出了对其压缩编码的限制。