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 命令,您必須擁有INSERTAmazon Redshift 資料表的權限。

COPY 語法

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

COPY 語法概觀

您可以只使用三個參數來執行 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中的tickitAmazon S3 儲存體名為awssampledbuswest2。COPY 命令 Amazon S3 過AWS Identity and Access Management(IAM) 角色。如果叢集的現有 IAM 角色具備存取附加的 Amazon S3 的許可,您可以在下列 COPY 命令中換成此角色的 Amazon Resource Name (ARN),然後執行此角色。

copy catdemo from 's3://awssampledbuswest2/tickit/category_pipe.txt' iam_role 'arn:aws:iam::<aws-account-id>:role/<role-name>' region 'us-west-2';

如需建立 IAM 角色的步驟,請參步驟 2:建立 IAM 角色在 Amazon Redshift 入門指南中。有關如何使用 COPY 命令加載示例數據的完整説明,包括從其他AWS區域,請參閲步驟 6:從 Amazon S3 載入範例資料在 Amazon Redshift 入門指南中..

table-name

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

FROM data-source

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

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

Authorization

此子句指出叢集在身份驗證和授權對其他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 命令的詳細資訊,請參閱下列主題: