COPY - Amazon Redshift

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

COPY

從資料檔案或 Amazon DynamoDB 資料表,將資料載入資料表。這些檔案可以位於 Amazon Simple Storage Service (Amazon S3) 儲存貯體、Amazon EMR 叢集或使用安全殼層 (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命令的資料來源是名為的 Amazon S3 儲存貯體資料tickitcategory_pipe.txt中名為的資料檔案redshift-downloads。該COPY命令獲得授權,可透過 AWS Identity and Access Management (IAM) 角色存取 Amazon S3 儲存貯體。如果您的叢集具有存取 Amazon S3 權限的現有IAM角色,您可以在以下COPY命令中替換角色的 Amazon 資源名稱 (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';

如需如何使用COPY命令載入範例資料的完整指示,包括從其他 AWS 區域載入資料的指示,請參閱 Amazon Redshift 入門指南中的從 Amazon S3 載入範例資料

table-name

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

FROM資料來源

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

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

授權

指出叢集用於驗證和授權以存取其他 AWS 資源的方法的子句。該COPY命令需要授權才能存取其他 AWS 資源中的資料,包括 Amazon S3、Amazon EMR、Amazon DynamoDB 和亞馬遜。EC2您可以參考附加至叢集的IAM角色,或為使用者提供存取金鑰 ID 和秘密存取金鑰,以提供該授IAM權。

選用的參數

您可以選擇性COPY地指定如何將欄位資料對應至目標資料表中的資料行、定義來源資料屬性以使COPY命令能夠正確讀取和剖析來源資料,以及管理COPY命令在載入程序期間執行的作業。

欄映射

依預設,將欄位值COPY插入目標資料表的欄位,順序與資料檔中的欄位出現的順序相同。如果預設欄順序不起作用,您可以指定欄清單或使用JSONPath運算式將來源資料欄位對映至目標資料行。

資料格式參數

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

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

資料轉換參數

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

資料載入操作

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

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

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

COPY 命令範例

如需展示如何COPY從不同來源、不同格式以及不同COPY選項的更多範例,請參閱。COPY例子