COPY 從 Amazon S3 - Amazon Redshift

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

COPY 從 Amazon S3

若要從位於一或多個 S3 儲存貯體中的檔案載入資料,請使用 FROM子句來指示檔案在 Amazon S3 中COPY的位置。您可以提供資料檔案的物件路徑作為FROM子句的一部分,也可以提供包含 Amazon S3 物件路徑清單的清單檔案的位置。COPY 從 Amazon S3 使用 HTTPS連線。確定 S3 IP 範圍已新增至您的允許清單。若要進一步了解所需的 S3 IP 範圍,請參閱網路隔離

重要

如果存放資料檔案的 Amazon S3 儲存貯體與叢集不位於相同的 AWS 區域,您必須使用 REGION 參數來指定資料所在的區域。

語法

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

範例

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

copy customer from 's3://amzn-s3-demo-bucket/customer' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

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

copy customer from 's3://amzn-s3-demo-bucket/cust.manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest;

參數

FROM

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

's3://copy_from_s3_objectpath'

指定含有資料之 Amazon S3 物件的路徑 Amazon S3 - 例如 's3://amzn-s3-demo-bucket/custdata.txt's3://copy_from_s3_objectpath 參數可以參考單一檔案,或一組有相同金鑰前綴的物件或資料夾。例如,custdata.txt 這個名稱是參考一些實體檔案的金鑰前綴:custdata.txtcustdata.txt.1custdata.txt.2custdata.txt.bak 等。金鑰前綴也可以參考一些資料夾。例如,'s3://amzn-s3-demo-bucket/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://copy_from_s3_manifest_file' 引數必須明確參考單一檔案 - 例如 's3://amzn-s3-demo-bucket/manifest.txt'。無法參考金鑰前綴。

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

{ "entries": [ {"url":"s3://amzn-s3-demo-bucket1/custdata.1","mandatory":true}, {"url":"s3://amzn-s3-demo-bucket1/custdata.2","mandatory":true}, {"url":"s3://amzn-s3-demo-bucket2/custdata.1","mandatory":false} ] }

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

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

{ "entries":[ { "url":"s3://amzn-s3-demo-bucket1/orc/2013-10-04-custdata", "mandatory":true, "meta":{ "content_length":99 } }, { "url":"s3://amzn-s3-demo-bucket2/orc/2013-10-05-custdata", "mandatory":true, "meta":{ "content_length":99 } } ] }

即使已指定 ENCRYPTED、GZIP、、 或 LZOPZSTD選項,也不得加密BZIP2或壓縮資訊清單檔案。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角色型存取控制。如需詳細資訊,請參閱授權參數

MANIFEST

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

ENCRYPTED

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

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

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

即使已指定 ENCRYPTED選項,也不得加密清單檔案和JSONPaths檔案。

MASTER_SYMMETRIC_KEY 'root_key '

用於將 Amazon S3 上的資料檔案加密的根對稱金鑰。如果指定 MASTER_SYMMETRIC_KEY,也必須指定 ENCRYPTED 參數。MASTER_SYMMETRIC_KEY 無法與 CREDENTIALS 參數搭配使用。如需詳細資訊,請參閱從 Amazon S3 載入加密的資料檔案

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

REGION 【AS】 'aws-region '

指定來源資料所在的 AWS 區域。REGION 當包含資料 AWS 的資源不在與 Amazon Redshift 叢集相同的區域中時, 需要COPY從 Amazon S3 儲存貯體或 DynamoDB 資料表進行。 Amazon S3

aws_region 的值必須符合 Amazon Redshift 區域與端點資料表所列的區域。

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

注意

跨區域傳輸資料需要為含有資料的 Amazon S3 儲存貯體或 DynamoDB 資料表另外付費。如需定價的詳細資訊,請參閱 Amazon S3 定價頁面上的OUT從 Amazon S3 到另一個 AWS 區域的資料傳輸,以及 Amazon DynamoDB 定價頁面上的資料傳輸OUTAmazon S3

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

選用的參數

您可以選擇性地COPY從 Amazon S3 使用 指定下列參數:

不支援的參數

您無法COPY從 Amazon S3 將下列參數與 搭配使用:

  • SSH

  • READRATIO