

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

# Neptune 載入器 Get-Status 回應
<a name="load-api-reference-status-response"></a>

 下列來自 Neptune Get-Status API 的範例回應說明回應的整體結構、說明各種欄位及其資料類型，以及錯誤處理和錯誤日誌詳細資訊。

## Neptune 載入器 Get-Status 回應 JSON 配置
<a name="load-api-reference-status-response-layout"></a>

載入器狀態回應的一般配置如下：

```
{
    "status" : "200 OK",
    "payload" : {
        "feedCount" : [
            {
                "LOAD_FAILED" : number
            }
        ],
        "overallStatus" : {
            "fullUri" : "s3://bucket/key",
            "runNumber" : number,
            "retryNumber" : number,
            "status" : "string",
            "totalTimeSpent" : number,
            "startTime" : number,
            "totalRecords" : number,
            "totalDuplicates" : number,
            "parsingErrors" : number,
            "datatypeMismatchErrors" : number,
            "insertErrors" : number,
        },
        "failedFeeds" : [
            {
                "fullUri" : "s3://bucket/key",
                "runNumber" : number,
                "retryNumber" : number,
                "status" : "string",
                "totalTimeSpent" : number,
                "startTime" : number,
                "totalRecords" : number,
                "totalDuplicates" : number,
                "parsingErrors" : number,
                "datatypeMismatchErrors" : number,
                "insertErrors" : number,
            }
        ],
        "errors" : {
            "startIndex" : number,
            "endIndex" : number,
            "loadId" : "string,
            "errorLogs" : [ ]
        }
    }
}
```

## Neptune 載入器 Get-Status `overallStatus` 和 `failedFeeds` 回應物件
<a name="load-api-reference-status-response-objects"></a>

針對每個失敗饋送傳回的可能回應 (包括錯誤描述) 與 `Get-Status` 回應中的 `overallStatus` 物件相同。

以下欄位會出現在所有載入的 `overallStatus` 物件中，以及每個失敗饋送的 `failedFeeds` 物件中。
+ **`fullUri`** – 要載入的一個或多個檔案的 URI。

  *類型*：*字串*

  *格式*：`s3://bucket/key`。
+ **`runNumber`** – 此載入或饋送的執行數量。它會在載入重新啟動時遞增。

  *類型：**unsigned long*。
+ **`retryNumber`** – 此載入或饋送的重試次數。它會在載入器自動重試饋送或載入時遞增。

  *類型：**unsigned long*。
+ **`status`** – 載入或饋送傳回的狀態。`LOAD_COMPLETED` 表示成功載入，沒有發生問題。如需其他 load-status 訊息的清單，請參閱 [Neptune 載入器的錯誤和饋送訊息](loader-message.md)。

  *類型：**字串*。
+ **`totalTimeSpent`** – 載入或饋送時用於剖析及插入資料的時間 (以秒為單位)。這不包含擷取原始檔案清單所花費的時間。

  *類型：**unsigned long*。
+ **`totalRecords`** – 已載入或嘗試載入的記錄總數。

  *類型：**unsigned long*。

  請注意，從 CSV 檔案載入時，記錄計數並不是指載入的行數，而是指這些行中個別記錄的數目。例如，採取一個像這樣的小型 CSV 檔案：

  ```
  ~id,~label,name,team
  'P-1','Player','Stokes','England'
  ```

  Neptune 會認為這個檔案包含 3 筆記錄，即：

  ```
  P-1  label Player
  P-1  name  Stokes
  P-1  team  England
  ```
+ **`totalDuplicates`** – 遇到的重複記錄數目。

  *類型：**unsigned long*。

  與 `totalRecords` 計數的情況一樣，此值包含 CSV 檔案中個別重複記錄的數目，而不是重複行的數目。採取這個小型 CSV 檔案，例如：

  ```
  ~id,~label,name,team
  P-2,Player,Kohli,India
  P-2,Player,Kohli,India
  ```

  載入它之後傳回的狀態看起來像這樣，總共報告了 6 筆記錄，其中 3 筆是重複的：

  ```
  {
    "status": "200 OK",
    "payload": {
      "feedCount": [
        {
          "LOAD_COMPLETED": 1
        }
      ],
      "overallStatus": {
        "fullUri": "(the URI of the CSV file)",
        "runNumber": 1,
        "retryNumber": 0,
        "status": "LOAD_COMPLETED",
        "totalTimeSpent": 3,
        "startTime": 1662131463,
        "totalRecords": 6,
        "totalDuplicates": 3,
        "parsingErrors": 0,
        "datatypeMismatchErrors": 0,
        "insertErrors": 0
      }
    }
  }
  ```

  對於 openCypher 載入，發生以下情況時計為重複：
  + 載入器偵測到節點檔案中的資料列具有一個未含 ID 空間的 ID，其與另一個未含 ID 空間的 ID 值相同，不是在另一個資料列中，就是屬於現有節點。
  + 載入器偵測到節點檔案中的資料列具有一個含 ID 空間的 ID，其與另一個含 ID 空間的 ID 值相同，不是在另一個資料列中，就是屬於現有節點。

  請參閱 [載入 openCypher 資料的特殊考量](load-api-reference-load.md#load-api-reference-load-parameters-opencypher)。
+ **`parsingErrors`** – 遇到的剖析錯誤數目。

  *類型：**unsigned long*。
+ **`datatypeMismatchErrors`** – 資料類型與給定資料不符的記錄數目。

  *類型：**unsigned long*。
+ **`insertErrors`** – 由於錯誤而無法插入的記錄數目。

  *類型：**unsigned long*。

## Neptune 載入器 Get-Status `errors` 回應物件
<a name="load-api-reference-status-errors"></a>

錯誤分為以下類別：
+ **`Error 400`** – 無效的 `loadId` 會傳回 HTTP `400` 錯誤的請求錯誤。描述錯誤的訊息。
+ **`Error 500`** – 無法處理的有效請求會傳回 HTTP `500` 內部伺服器錯誤。描述錯誤的訊息。

如需載入器在發生錯誤時傳回的錯誤和饋送訊息清單，請參閱 [Neptune 載入器的錯誤和饋送訊息](loader-message.md)。

發生錯誤時，回應的 `BODY` 中會傳回 JSON `errors` 物件，具有下列欄位：
+ **`startIndex`** – 第一個包含的錯誤的索引。

  *類型：**unsigned long*。
+ **`endIndex`** – 最後一個包含的錯誤的索引。

  *類型：**unsigned long*。
+ **`loadId`** – 載入的 ID。您可以使用此 ID 並將 `errors` 參數設為 `TRUE` 以列印載入的錯誤。

  *類型：**字串*。
+ **`errorLogs`** – 錯誤清單。

  *類型：**清單*。

## Neptune 載入器 Get-Status `errorLogs` 回應物件
<a name="load-api-reference-error-logs"></a>

載入器 Get-Status 回應中 `errors` 下的 `errorLogs` 物件包含使用下列欄位描述每個錯誤的物件：
+ **`errorCode`** – 識別錯誤的本質。

  它可以採取下列其中一個值：
  + `PARSING_ERROR`
  + `S3_ACCESS_DENIED_ERROR`
  + `FROM_OR_TO_VERTEX_ARE_MISSING`
  + `ID_ASSIGNED_TO_MULTIPLE_EDGES`
  + `SINGLE_CARDINALITY_VIOLATION`
  + `FILE_MODIFICATION_OR_DELETION_ERROR`
  + `OUT_OF_MEMORY_ERROR`
  + `INTERNAL_ERROR` (當大量載入器無法確定錯誤類型時傳回)。
+ **`errorMessage`** – 描述錯誤的訊息。

  這可以是與錯誤代碼相關聯的一般訊息，或包含詳細資訊的特定訊息，例如關於遺失來源/目標頂點或關於剖析錯誤。
+ **`fileName`** – 饋送的名稱。
+ **`recordNum`** – 在發生剖析錯誤的情況下，這是無法剖析的記錄在檔案中的記錄編號。如果記錄編號不適用於錯誤，或無法確定，則其設定為零。

例如，如果大量載入器在 RDF `nquads` 檔案中遇到如下的錯誤資料列，則會產生剖析錯誤：

```
<http://base#subject> |http://base#predicate> <http://base#true> .
```

如您所見，上面資料列中的第二個 `http` 應該在其前加上 `<` 而不是 `|`。狀態回應中 `errorLogs` 下產生的錯誤物件看起來像這樣：

```
{
    "errorCode" : "PARSING_ERROR",
    "errorMessage" : "Expected '<', found: |",
    "fileName" : "s3://bucket/key",
    "recordNum" : 12345
},
```