本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
STL_LOADERROR_DETAIL
顯示當使用 COPY 命令來載入資料表時發生之資料剖析錯誤的日誌。若要保留磁碟空間,針對每個載入操作,每個節點配量最多可記錄 20 個錯誤。
將資料列中的欄位載入至資料表時,若 Amazon Redshift 無法剖析該欄位,即會發生剖析錯誤。例如,如果資料表資料欄預期 integer 資料類型,但資料檔案在該欄位中包含一串字母,則其會導致剖析錯誤。
在您查詢 STL_LOAD_ERRORS 以了解有關錯誤的一般資訊之後,查詢 STL_LOADERROR_DETAIL 以取得其他詳細資訊,例如發生剖析錯誤的確切資料列和資料欄。
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 時,它會顯示資料列中每個資料欄的錯誤原因,這僅表示該資料列中發生錯誤。結果中的最後一列是發生剖析錯誤的實際資料欄。