openGauss 處理錯誤表

奔跑的数据库發表於2024-07-08

處理錯誤表

操作場景

當資料匯入發生錯誤時,請根據本文指引資訊進行處理。

查詢錯誤資訊

資料匯入過程中發生的錯誤,一般分為資料格式錯誤和非資料格式錯誤。

  • 資料格式錯誤

    在建立外表時,透過設定引數“LOG INTO error_table_name”,將資料匯入過程中出現的資料格式錯誤資訊寫入指定的錯誤資訊表error_table_name中。您可以透過以下SQL,查詢詳細錯誤資訊。

    openGauss=# SELECT * FROM error_table_name;
    

    錯誤資訊表結構如表1所示。

    表 1 錯誤資訊表

    列名稱

    型別

    描述

    nodeid

    integer

    報錯節點編號。

    begintime

    timestamp with time zone

    出現資料格式錯誤的時間。

    filename

    character varying

    出現資料格式錯誤的資料來源檔名。

    rownum

    numeric

    在資料來源檔案中,出現資料格式錯誤的行號。

    rawrecord

    text

    在資料來源檔案中,出現資料格式錯誤的原始記錄。

    detail

    text

    詳細錯誤資訊。

  • 非資料格式錯誤

    對於非資料格式錯誤,一旦發生將導致整個資料匯入失敗。您可以根據執行資料匯入過程中,介面提示的錯誤資訊,幫助定位問題,處理錯誤表。

處理資料匯入錯誤

根據獲取的錯誤資訊,請對照下表,處理資料匯入錯誤。

表 2 處理資料匯入錯誤

錯誤資訊

原因

解決辦法

missing data for column "r_reason_desc"

  1. 資料來源檔案中的列數比外表定義的列數少。
  2. 對於TEXT格式的資料來源檔案,由於跳脫字元(\)導致delimiter(分隔符)錯位或者quote(引號字元)錯位造成的錯誤。

    示例:目標表存在3列欄位,匯入的資料如下所示。由於存在跳脫字元“\”,分隔符“|”被轉義為第二個欄位的欄位值,導致第三個欄位值缺失。

    BE|Belgium\|1
  1. 由於列數少導致的報錯,選擇下列辦法解決:
    • 在資料來源檔案中,增加列“r_reason_desc”的欄位值。
    • 在建立外表時,將引數“fill_missing_fields”設定為“on”。即當匯入過程中,若資料來源檔案中一行資料的最後一個欄位缺失,則把最後一個欄位的值設定為NULL,不報錯。
  2. 對由於跳脫字元導致的錯誤,需檢查報錯的行中是否含有跳脫字元(\)。若存在,建議在建立外表時,將引數“noescaping”(是否不對'\'和後面的字元進行轉義)設定為true。

extra data after last expected column

資料來源檔案中的列數比外表定義的列數多。

  • 在資料來源檔案中,刪除多餘的欄位值。
  • 在建立外表時,將引數“ignore_extra_data”設定為“on”。即在匯入過程中,若資料來源檔案比外表定義的列數多,則忽略行尾多出來的列。

invalid input syntax for type numeric: "a"

資料型別錯誤。

在資料來源檔案中,修改輸入欄位的資料型別。根據此錯誤資訊,請將輸入的資料型別修改為numeric。

null value in column "staff_id" violates not-null constraint

非空約束。

在資料來源檔案中,增加非空欄位資訊。根據此錯誤資訊,請增加“staff_id”列的值。

duplicate key value violates unique constraint "reg_id_pk"

唯一約束。

  • 刪除資料來源檔案中重複的行。
  • 透過設定關鍵字“DISTINCT”,從SELECT結果集中刪除重複的行,保證匯入的每一行都是唯一的。
    openGauss=# INSERT INTO reasons SELECT DISTINCT * FROM foreign_tpcds_reasons;

value too long for type character varying(16)

欄位值長度超過限制。

在資料來源檔案中,修改欄位值長度。根據此錯誤資訊,欄位值長度限制為VARCHAR2(16)。

詳情檢視:https://opengauss.org

詳情檢視:https://docs-opengauss.osinfra.cn

相關文章