

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

# 防止編目程式變更現有的結構描述
<a name="crawler-schema-changes-prevent"></a>

 您可以防止 AWS Glue 編目程式在其執行時對 Data Catalog 進行任何結構描述變更。依預設，編目程式會更新 Data Catalog 中的結構描述，以符合要網路爬取的資料來源。但是，在某些情況下，您可能想要防止編目程式修改現有的結構描述，特別是如果您已轉換或清理資料，而且不希望原始結構描述覆寫變更。

 請依照下列步驟來設定編目程式，不要覆寫資料表定義中的現有結構描述。

------
#### [  AWS 管理主控台  ]

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 開啟 AWS Glue 主控台。

1. 選擇 **Data Catalog** 下的**編目程式**。

1. 從清單中選擇編目程式，然後選擇**編輯**。

1. 選擇**步驟 4：設定輸出和排程**。

1. 在**進階選項**下，選擇**僅新增資料欄**或**忽略變更且不更新 Data Catalog 中的資料表**。

1.  此外，您還可以將組態選項設定為**以資料表的中繼資料更新所有新的和現有的分區**。這會將分區結構描述設定為從資料表繼承。

1. 選擇**更新**。

------
#### [ AWS CLI ]

下列範例顯示如何將編目程式設定為不變更現有的結構描述，只新增資料欄：

```
aws glue update-crawler \
  --name myCrawler \
  --configuration '{"Version": 1.0, "CrawlerOutput": {"Tables": {"AddOrUpdateBehavior": "MergeNewColumns"}}}'
```

下列範例顯示如何將編目程式設定為不變更現有的結構描述，且不新增資料欄：

```
aws glue update-crawler \
  --name myCrawler \
  --schema-change-policy UpdateBehavior=LOG \
  --configuration '{"Version": 1.0, "CrawlerOutput": {"Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }}}'
```

------
#### [ API ]

如果您不希望爬蟲程式執行時變更資料表結構描述，可將結構描述變更政策設為 `LOG`。

當您使用 API 設定爬蟲程式時，請設定下列參數：
+ 將 `SchemaChangePolicy` 結構中的 `UpdateBehavior` 欄位設為 `LOG`。
+  在爬蟲程式 API 中，以呈現以下 JSON 物件的字串設定 `Configuration` 欄位，例如：

  ```
  {
     "Version": 1.0,
     "CrawlerOutput": {
        "Partitions": { "AddOrUpdateBehavior": "InheritFromTable" }
     }
  }
  ```

------