從 Amazon S3 中複製 - Amazon Redshift

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

從 Amazon S3 中複製

若要從位於一或多個 S3 儲存貯體的檔案載入資料,請使用 FROM 子句來指出 COPY 如何尋找 Amazon S3 中的檔案。您可以在 FROM 子句中提供資料檔案的物件路徑,或提供資訊清單檔案 (包含 Amazon S3 資料路徑清單) 的位置。從 Amazon S3 進行 COPY 時會使用 HTTPS 連線。

重要

如果保存數據文件的 Amazon S3 存儲桶不位於同一AWS區域作為您的叢集,您必須使用REGION參數指定數據所在的區域。

Syntax (語法)

FROM { 's3://objectpath' | 's3://manifest_file' } authorization | MANIFEST | ENCRYPTED | REGION [AS] 'aws-region' | optional-parameters

範例

下列範例使用物件路徑以從 Amazon S3 載入資料。

copy customer from 's3://mybucket/customer' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

下列範例使用資訊清單檔案以從 Amazon S3 載入資料。

copy customer from 's3://mybucket/cust.manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest;

參數

FROM

載入的資料來源。如需 Amazon S3 檔案編碼的詳細資訊,請參資料轉換參數

's3://copy_from_s3_objectpath'

指定含有資料之 Amazon S3 物件的路徑 — 例如,'s3://mybucket/custdata.txt's3://copy_from_s3_objectpath 參數可以參考單一檔案,或一組有相同金鑰前綴的物件或資料夾。例如,custdata.txt 這個名稱是參考一些實體檔案的金鑰前綴:custdata.txtcustdata.txt.1custdata.txt.2custdata.txt.bak 等。金鑰前綴也可以參考一些資料夾。例如,'s3://mybucket/custfolder' 參考資料夾 custfoldercustfolder_1custfolder_2 等。如果金鑰前綴參考多個資料夾,則會載入這些資料夾中的所有檔案。如果金鑰前綴符合檔案又符合資料夾,例如 custfolder.log,COPY 也會嘗試載入此檔案。如果金鑰前綴可能導致 COPY 嘗試載入不需要的檔案,請使用資訊清單檔案。如需詳細資訊,請參閱下列 copy_from_s3_manifest_file

重要

如果存放資料檔案的 S3 儲存貯體所在區域不是同一個AWS區域作為您的叢集,您必須使用REGION參數指定數據所在的區域。

如需詳細資訊,請參閱 從 Amazon S3 載入資料

's3://copy_from_s3_manifest_file'

指定資訊清單檔案 (列出要載入的資料檔案) 的 Amazon S3 物件金鑰。所以此's3://複製 _s3_milst_file '參數必須顯式引用單個文件-例如's3://mybucket/manifest.txt'。無法參考金鑰前綴。

資訊清單是 JSON 格式的文字檔案,其中列出要從 Amazon S3 載入之每個檔案的 URL。URL 包含檔案的儲存貯體名稱和完整物件路徑。資訊清單中指定的檔案可以位於不同儲存貯體,但所有儲存貯體必須位於同一AWSAmazon Redshift 叢集。如果某個檔案列出兩次,則該檔案會載入兩次。下列範例顯示資訊清單的 JSON,此資訊清單會載入三個檔案。

{ "entries": [ {"url":"s3://mybucket-alpha/custdata.1","mandatory":true}, {"url":"s3://mybucket-alpha/custdata.2","mandatory":true}, {"url":"s3://mybucket-beta/custdata.1","mandatory":false} ] }

雙引號字元是必要的,且必須是簡單引號 (0x22),而不是斜向或「智慧型」引號。資訊清單中的每個項目可以選擇性包含 mandatory 旗標。如果 mandatory 設為 true,COPY 找不到該項目的檔案時會終止;否則,COPY 會繼續。mandatory 的預設值為 false

載入格式為 ORC 或 Parquet 的資料檔案時,需要 meta 欄位,如下列範例所示。

{ "entries":[ { "url":"s3://mybucket-alpha/orc/2013-10-04-custdata", "mandatory":true, "meta":{ "content_length":99 } }, { "url":"s3://mybucket-beta/orc/2013-10-05-custdata", "mandatory":true, "meta":{ "content_length":99 } } ] }

即使指定 ENCRYPTED、GZIP、LZOP、BZIP2 或 ZSTD 選項,也不可對資訊清單檔案進行加密或壓縮。如果找不到指定的資訊清單檔案,或資訊清單檔案的格式不正確,COPY 會傳回錯誤。

如果使用資訊清單檔案,則必須使用 COPY 命令指定 MANIFEST 參數。如果未指定 MANIFEST 參數,COPY 會假設 FROM 指定的檔案是資料檔案。

如需詳細資訊,請參閱 從 Amazon S3 載入資料

authorization

COPY 命令需要取得授權來存取另一個AWS資源中,包括在 Amazon S3、Amazon EMR、Amazon DynamoDB 和 Amazon EC2 中。您可以通過引用AWS Identity and Access Management(IAM) 角色 (角色型存取控制),或將存取登入資料提供給 IAM 使用者 (金鑰型存取控制)。為了提高安全性和彈性,建議使用 IAM 角色型存取控制。如需詳細資訊,請參閱 授權參數

MANIFEST

指定使用資訊清單來指出要從 Amazon S3 載入的資料檔案。如果使用 MANIFEST 參數,COPY 會從 's3://copy_from_s3_manifest_file' 參考的資訊清單中所列的檔案載入資料。如果找不到資訊清單檔案,或此檔案的格式不正確,COPY 會失敗。如需詳細資訊,請參閱 使用資訊清單指定資料檔案

ENCRYPTED

此子句會指定 Amazon S3 上的輸入檔案是以用用户端加密搭配客户端託管金鑰所加密進行加密。如需詳細資訊,請參閱 從 Amazon S3 載入加密的資料檔案。如果輸入檔案是以 Amazon S3 伺服器端加密 (SSE-KMS 或 SSE-S3) 所加密,請勿指定 ENCRYPTED。COPY 會自動讀取伺服器端加密檔案。

如果指定 ENCRYPTED 參數,則還必須指定 MASTER_SYMMETRIC_KEY 參數,或在 CREDENTIALS 字串中包含 master_symmetric_key 值。

如果加密檔案是壓縮格式,請增加 GZIP、LZOP、BZIP2 或 ZSTD 參數。

即使指定 ENCRYPTED 選項,也不得對資訊清單檔案和 JSONPaths 檔案進行加密。

主對稱密鑰 '根鍵'

用於對 Amazon S3 上的資料檔案進行加密的對稱根金鑰。如果指定 MASTER_SYMMETRIC_KEY,則還必須指定 ENCRYPTED 參數。MASTER_SYMMETRIC_KEY 不能與 CREDENTIALS 參數一起使用。如需詳細資訊,請參閱 從 Amazon S3 載入加密的資料檔案

如果加密檔案是壓縮格式,請增加 GZIP、LZOP、BZIP2 或 ZSTD 參數。

REGION [AS] 'aws-region'

指定AWS來源資料所在的區域。區域是從 Amazon S3 存儲桶或 DynamoDB 表複製所必需的,當AWS資源所在區域與 Amazon Redshift 叢集的區域不是同一個區域。

的值aws_region必須與Amazon Redshift 區域和終端節點表。

如果指定 REGION 參數,則所有資源 (包括資訊清單檔案或多個 Amazon S3 儲存貯體) 都必須位於指定的區域。

注意

跨區域傳輸資料需要為含有資料的 Amazon S3 儲存貯體或 DynamoDB 資料表另外付費。如需定價的詳細資訊,請參數據從 Amazon S3 傳輸到另一個AWSRegion (區域)Amazon S3 定價頁面和傳出資料Amazon DynamoDB 定價(憑證已建立!) 頁面上的名稱有些許差異。

根據預設,COPY 會假設資料與 Amazon Redshift 叢集位於相同區域。

選用參數

從 Amazon S3 COPY 時,您可以選擇性指定下列參數:

不支援的參數

從 Amazon S3 COPY 時,您不能使用下列參數:

  • SSH

  • READRATIO