COPY - Amazon Redshift

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

COPY

從資料檔案或 Amazon DynamoDB 資料表,將資料載入資料表。檔案可能位於 Amazon Simple Storage Service (Amazon S3) 儲存貯體、Amazon EMR 叢集,或使用 Secure Shell (SSH) 連線來存取的遠端主機。

注意

Amazon Redshift Spectrum 外部資料表是唯讀的。您無法 COPY 到外部資料表。

COPY 命令會將新的輸入資料附加到資料表中任何現有的列。

任何來源的單一輸入資料列最大為 4 MB。

所需的許可

若要使用 COPY 命令,您必須擁有 Amazon Redshift 資料表的 INSERT 權限。

COPY 語法

COPY table-name [ column-list ] FROM data_source authorization [ [ FORMAT ] [ AS ] data_format ] [ parameter [ argument ] [, ... ] ]

您可以只使用三個參數來執行 COPY 操作:資料表名稱、資料來源、存取資料的授權。

Amazon Redshift 延伸 COPY 命令的功能,可讓您從多個資料來源載入多種資料格式的資料、控制資料載入的存取權限、管理資料轉換,以及管理載入操作。

以下各節介紹必要的 COPY 命令參數,並依功能將選用參數分組。其中也會描述每個參數,並解釋如何搭配運用各種選項。您可以利用依字母順序排列的參數清單,直接跳到參數描述。

必要參數

COPY 命令需要三個元素:

最簡單的 COPY 命令採用下列格式。

COPY table-name FROM data-source authorization;

下列範例會建立名為 CATDEMO 的資料表,然後從 Amazon S3 中一個名為 category_pipe.txt 的資料檔案,將範例資料載入此資料表。

create table catdemo(catid smallint, catgroup varchar(10), catname varchar(10), catdesc varchar(50));

在下列範例中,COPY 命令的資料來源是位於名為 category_pipe.txt 之 Amazon S3 儲存貯體的 tickit 資料夾中,一個名為 redshift-downloads 的資料檔案。COPY 命令透過 AWS Identity and Access Management (IAM) 角色而獲授權可存取 Amazon S3 儲存貯體。如果叢集現有的 IAM 角色已附加 Amazon S3 的存取權,您可以在下列 COPY 命令中換成此角色的 Amazon Resource Name (ARN),再執行命令。

copy catdemo from 's3://redshift-downloads/tickit/category_pipe.txt' iam_role 'arn:aws:iam::<aws-account-id>:role/<role-name>' region 'us-east-1';

如需建立 IAM 角色的步驟,請參閱《Amazon Redshift 入門指南》中的步驟 2:建立 IAM 角色。如需如何使用 COPY 命令載入範例資料的完整指示,包括從其他 AWS 區域載入資料的指示,請參閱《Amazon Redshift 入門指南》中的步驟 6:從 Amazon S3 載入範例資料

table-name

COPY 命令的目標資料表名稱。此資料表必須已存在於資料庫中。此資料表可以是暫時性或持久性。COPY 命令會將新的輸入資料附加到資料表中任何現有的資料列。

FROM data-source

在目標資料表中載入之來源資料的位置。資訊清單檔案可與一些資料來源一起指定。

最常用的資料儲存庫是 Amazon S3 儲存貯體。您也可以從位於 Amazon EMR 叢集、Amazon EC2 執行個體或遠端主機 (叢集可利用 SSH 連線來存取) 的資料檔案載入,或直接從 DynamoDB 資料表載入。

授權

此子句指出叢集在驗證和授權對其他 AWS 資源的存取權時使用的方法。COPY 命令需要取得授權來存取另一個 AWS 資源中 (包括在 Amazon S3、Amazon EMR、Amazon DynamoDB 和 Amazon EC2 中) 的資料。您可以參考叢集附加的 IAM 角色,或將存取金鑰 ID 和私密存取金鑰提供給 IAM 使用者,以提供該授權。

選用的參數

您可以選擇指定 COPY 如何將欄位資料映射至目標資料表中的欄、定義來源資料屬性讓 COPY 命令正確讀取和剖析來源資料,以及管理 COPY 命令在載入過程中執行哪些操作。

欄映射

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

資料格式參數

您可以從固定寬度、字元分隔、逗號分隔值 (CSV) 或 JSON 格式的文字檔案,或從 Avro 檔案載入資料。

根據預設,COPY 命令預期來源資料是位於字元分隔的 UTF-8 文字檔案中。預設分隔符號是縱線字元 ( | )。如果來源資料是其他格式,請使用下列參數來指定資料格式。

資料轉換參數

COPY 載入資料表時會嘗試隱含地將來源資料中的字串轉換為目標欄的資料類型。如果您需要指定不同於預設行為的轉換,或預設轉換造成錯誤,您可以指定下列參數來管理資料轉換。

資料載入操作

指定下列參數來管理載入操作的預設行為,以進行故障排除或縮短載入時間。

COPY 命令的使用注意事項和其他資源

如需如何使用 COPY 命令的詳細資訊,請參閱下列主題:

COPY 命令範例

如需顯示如何從不同來源、不同格式和不同 COPY 選項進行 COPY 的更多範例,請參閱COPY 範例