用于解决数据加载问题的系统表 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

用于解决数据加载问题的系统表

以下 Amazon Redshift 系统表可能有助于排查数据加载问题:

  • 查询 STL_LOAD_ERRORS 以发现在特定加载期间发生的错误。

  • 查询 STL_FILE_SCAN 以查看特定文件的加载时间或了解是否甚至读取了某个特定文件。

  • 查询 STL_S3CLIENT_ERROR 以查找有关从 Amazon S3 传输数据时遇到的错误的详细信息。

查找和诊断加载错误
  1. 创建视图或定义返回有关加载错误的详细信息的查询。以下示例将 STL_LOAD_ERRORS 表联接到 STV_TBL_PERM 表以将表 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);
  2. 将 COPY 命令中的 MAXERRORS 选项设置为足够大的值,以使 COPY 能够返回有关您的数据的有用值。如果 COPY 遇到错误,则会出现一条错误消息,指示您参阅 STL_LOAD_ERRORS 表以了解详细信息。

  3. 查询 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
  4. 根据视图返回的信息修复输入文件或加载脚本中的问题。要观察的一些典型加载错误包括:

    • 表中的数据类型与输入数据字段中的值不匹配。

    • 表中的列数与输入数据中的字段数不匹配。

    • 引号不匹配。Amazon Redshift 支持单引号和双引号;但是,必须适当平衡这些引号。

    • 输入文件中的日期/时间数据的格式不正确。

    • 输入文件中的值超出范围(对于数字列)。

    • 某个列的不同值的数量超出了对其压缩编码的限制。