用於對資料載入進行故障診斷的系統資料表 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

用於對資料載入進行故障診斷的系統資料表

下列 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 同時支援單引號和雙引號;不過,這些引號必須正確成對。

    • 輸入檔案中日期/時間資料的格式不正確。

    • O 輸入文件中的ut-of-range 值(用於數字列)。

    • 超出其壓縮編碼限制的資料欄的獨特值數量。