本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 COPY命令從 Amazon S3 載入
使用 COPY 命令從 Amazon S3 上的資料檔案平行載入資料表。您可以透過使用 Amazon S3 物件字首或使用資訊清單檔案來指定要載入的檔案。
使用字首指定要載入之檔案的語法如下所示:
COPY <table_name> FROM 's3://<bucket_name>/<object_prefix>' authorization;
資訊清單檔案是 JSON格式化的檔案,列出要載入的資料檔案。使用資訊清單檔案指定要載入之檔案的語法如下所示:
COPY <table_name> FROM 's3://<bucket_name>/<manifest_file>' authorization MANIFEST;
要載入的資料表必須已存在於資料庫中。如需建立資料表的相關資訊,請參閱 SQL 參考CREATE TABLE中的 。
授權值提供 Amazon Redshift 存取 Amazon S3 物件所需的 AWS 授權。如需所需許可的詳細資訊,請參閱IAM COPY、 UNLOAD和 的許可 CREATE LIBRARY。偏好的身分驗證方法是指定 IAM_ROLE 參數,並為具有必要許可IAM的角色提供 Amazon Resource Name (ARN)。如需詳細資訊,請參閱 角色類型存取控制。
若要使用 IAM_ROLE 參數進行身分驗證,請取代 <aws-account-id>
以及 <role-name>
如下列語法所示。
IAM_ROLE 'arn:aws:iam::
<aws-account-id>
:role/<role-name>
'
下列範例顯示使用 IAM角色的身分驗證。
COPY customer FROM 's3://amzn-s3-demo-bucket/mydata' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
如需其他授權選項的相關資訊,請參閱授權參數
如果您想要在不實際載入資料表的情況下驗證資料,請使用 NOLOAD選項搭配 COPY命令。
下列範例顯示名為 venue.txt
的檔案中以管線分隔資料的前幾個資料列。
1|Toyota Park|Bridgeview|IL|0 2|Columbus Crew Stadium|Columbus|OH|0 3|RFK Stadium|Washington|DC|0
將檔案上傳至 Amazon S3 之前,請將檔案分割為多個檔案,讓COPY命令可以使用平行處理載入檔案。檔案數量應為您叢集中的分割的倍數。分割您的載入資料,使檔案皆有相同的大小,在壓縮之後介於 1 MB 至 1 GB。如需詳細資訊,請參閱從已壓縮和未壓縮的檔案載入資料。
例如,venue.txt
檔案可以分割為四個檔案,如下所示:
venue.txt.1 venue.txt.2 venue.txt.3 venue.txt.4
下列COPY命令會使用管道分隔資料,在 Amazon S3 儲存貯體 中具有字首「venue」的資料檔案中載入VENUE資料表amzn-s3-demo-bucket
。
注意
下列範例中的 Amazon S3 儲存貯體 amzn-s3-demo-bucket
不存在。如需在現有 Amazon S3 儲存貯體中使用實際資料的範例COPY命令,請參閱載入範例資料 。
COPY venue FROM 's3://amzn-s3-demo-bucket/venue' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' DELIMITER '|';
如果不存在具有 'venue' 金鑰前綴的任何 Amazon S3 物件,則載入會失敗。