使用 COPY 命令從 Amazon S3 載入 - Amazon Redshift

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

使用 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 S3 物件所需的 AWS 授權。如需所需許可的詳細資訊,請參閱COPY、UNLOAD 和 CREATE LIBRARY 的 IAM 許可。身分驗證的偏好方法是指定 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://mybucket/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 命令會使用資料檔案中以管線分隔的資料來載入 VENUE 資料表,具有 Amazon S3 儲存貯體 mybucket 中的字首 'venue'。

注意

下列範例中的 Amazon S3 儲存貯體 mybucket 不存在。如需使用現有 Amazon S3 儲存貯體中實際資料的 COPY 命令範例,請參閱載入範例資料

copy venue from 's3://mybucket/venue' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' delimiter '|';

如果不存在具有 'venue' 金鑰前綴的任何 Amazon S3 物件,則載入會失敗。