欄映射選項 - Amazon Redshift

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

欄映射選項

根據預設,COPY 會依欄位在資料檔案中出現的同樣順序,將值插入目標資料表的欄。如果預設欄順序不適用,您可以指定欄清單或使用 JSONPath 表達式,將來源資料欄位映射至目標欄。

資料欄清單

您可以指定逗號分隔的欄名稱清單,以便將來源資料欄位載入特定的目標欄。COPY 陳述式中的欄可以是任何順序,但從純文字檔 (例如 Amazon S3 儲存貯體) 載入時,欄的順序必須符合來源資料的順序。

從 Amazon DynamoDB 資料表載入時,順序並不重要。COPY 命令會將擷取自 DynamoDB 資料表之項目中的屬性名稱,與 Amazon Redshift 資料表中的欄名稱進行比對。如需更多資訊,請參閱 從 Amazon DynamoDB 資料表載入資料

欄清單的格式如下。

COPY tablename (column1 [,column2, ...])

如果從欄清單中省略目標資料表的某一欄,COPY 會載入目標欄的 DEFAULT 表達式。

如果目標欄沒有預設值,COPY 會嘗試載入 NULL。

如果 COPY 嘗試將 NULL 指派給定義為 NOT NULL 的欄,COPY 命令會失敗。

如果欄清單包含 IDENTITY 欄,則還必須指定 EXPLICIT_IDS;如果 IDENTITY 欄遭省略,則不能指定 EXPLICIT_IDS。如果未指定欄清單,則命令的行為會如同已指定完整、按順序的欄清單一樣,而如果也未指定 EXPLICIT_IDS,則會 IDENTITY 欄會遭到省略。

如果資料欄是使用 GENERATED BY DEFAULT AS IDENTITY 定義的,則可以複製它。值是利用您提供的值來產生或更新。EXPLICIT_IDS 不是必要選項。COPY 不會更新身分高浮水印。如需詳細資訊,請參閱GENERATED BY DEFAULT AS IDENTITY

JSONPaths 檔案

從 JSON 或 Avro 格式的資料檔案載入時,COPY 會自動將 JSON 或 Avro 來源資料中的資料元素映射至目標資料表的欄。它會比對 Avro 結構定義中的欄位名稱與目標資料表或欄清單中的欄名稱,以達到這個目標。

在某些情況下,您的欄名稱和欄位名稱不相符,或者您需要映射至資料階層中的更深層級。在這些情況下,您可以使用 JSONPaths 檔案將 JSON 或 Avro 資料元素明確地映射至欄。

如需詳細資訊,請參閱JSONPaths 檔案