STL_LOADERROR_DETAIL - Amazon Redshift

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

STL_LOADERROR_DETAIL

顯示當使用 COPY 命令來載入資料表時發生之資料剖析錯誤的日誌。若要保留磁碟空間,針對每個載入操作,每個節點配量最多可記錄 20 個錯誤。

將資料列中的欄位載入至資料表時,如果 Amazon Redshift 無法剖析該欄位,即會發生剖析錯誤。例如,如果資料表資料欄預期 integer 資料類型,但資料檔案在該欄位中包含一串字母,則其會導致剖析錯誤。

在您查詢 STL_LOAD_ERRORS 以了解有關錯誤的一般資訊之後,查詢 STL_LOADERROR_DETAIL 以取得其他詳細資訊,例如發生剖析錯誤的確切資料列和資料欄。

STL_LOADERROR_DETAIL 資料欄包含發生剖析錯誤的資料欄(含)之前的所有資料欄。使用 VALUE 欄位來查看實際上已在此資料欄中剖析的資料值,包括已正確剖析至錯誤的資料欄。

所有使用者都可看見此視圖。超級使用者可以看見所有資料列;一般使用者只能看見自己的資料。如需詳細資訊,請參閱 系統資料表和檢視中資料的可見性

資料表欄位

資料欄名稱 資料類型 描述
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。
類型 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 時,它會顯示資料列中每個資料欄的錯誤原因,這僅表示該資料列中發生錯誤。結果中的最後一列是發生剖析錯誤的實際資料欄。