本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
STL_LOADERROR_DETAIL
顯示使用 COPY命令載入資料表時發生的資料剖析錯誤日誌。若要保留磁碟空間,針對每個載入操作,每個節點配量最多可記錄 20 個錯誤。
將資料列中的欄位載入至資料表時,若 Amazon Redshift 無法剖析該欄位,即會發生剖析錯誤。例如,如果資料表資料欄預期 integer 資料類型,但資料檔案在該欄位中包含一串字母,則其會導致剖析錯誤。
查詢後,查詢 STL_LOADERROR_DETAIL 以取得其他詳細資訊,例如發生剖析錯誤的確切資料列和資料欄,STL_LOAD_ERRORS以尋找有關錯誤的一般資訊。
STL_LOADERROR_DETAIL 檢視包含所有資料欄,包括發生剖析錯誤的資料欄之前的 和 。使用 VALUE 欄位來查看此欄中實際剖析的資料值,包括正確剖析至錯誤的資料欄。
所有使用者都可看見此檢視。超級使用者可以看見所有資料列;一般使用者只能看見自己的資料。如需詳細資訊,請參閱系統資料表和檢視中資料的可見性。
注意
STL_LOADERROR_DETAIL 僅包含主叢集上執行的查詢。但不包含在並行擴縮叢集上執行的查詢。若要存取在主要和並行擴展叢集上執行的查詢,建議您使用SYS監控檢視 SYS_LOAD_ERROR_DETAIL 。SYS 監控檢視中的資料已格式化,以便於使用和理解。
資料表欄
欄名稱 | 資料類型 | 描述 |
---|---|---|
userid | integer | 產生項目的使用者之 ID。 |
分割 | integer | 發生錯誤的配量。 |
session | integer | 執行載入之工作階段的工作階段 ID。 |
query | integer | 查詢 ID。查詢欄可用於加入其他系統表格與檢視。 |
filename | character(256) | 用於載入之輸入檔案的完整路徑。 |
line_number | bigint | 載入檔案中發生錯誤的行號。 |
field | integer | 發生錯誤的欄位。 |
colname | character(1024) | 資料欄名稱。 |
value | character(1024) | 欄位的已剖析資料值。(可能已截斷。) 載入資料中的多位元組字元會取代為句點。 |
is_null | integer | 已剖析值是否為 null。 |
type | character(10) | 欄位的資料類型。 |
col_length | character(10) | 資料欄長度 (如適用)。當資料類型具有限制長度時,會填入此欄位。例如,對於資料類型為 "character(3)" 的資料欄,此資料欄將包含值 "3"。 |
範例查詢
下列查詢會聯結 STL_LOAD_ERRORS 至 STL_LOADERROR_DETAIL,以檢視載入EVENT資料表時發生剖析錯誤的詳細資訊,資料表 ID 為 100133:
select d.query, d.line_number, d.value, le.raw_line, le.err_reason from stl_loaderror_detail d, stl_load_errors le where d.query = le.query and tbl = 100133;
下列範例輸出會顯示成功載入的資料欄,包括發生錯誤的資料欄。在此範例中,於第三個資料欄中發生剖析錯誤之前已成功載入兩個資料欄,此錯誤是對於預期整數的欄位,卻不正確地剖析字元字串。因為欄位預期整數,所以它將字串 "aaa" (未初始化的資料) 剖析為 null,並產生剖析錯誤。輸出顯示原始值、已剖析值和錯誤原因:
query | line_number | value | raw_line | err_reason -------+-------------+-------+----------+---------------- 4 | 3 | 1201 | 1201 | Invalid digit 4 | 3 | 126 | 126 | Invalid digit 4 | 3 | | aaa | Invalid digit (3 rows)
當查詢加入 STL_LOAD_ERRORS 和 STL_LOADERROR_ 時DETAIL,它會顯示資料列中每個資料欄的錯誤原因,這只是表示該資料列中發生錯誤。結果中的最後一列是發生剖析錯誤的實際資料欄。