Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

从 Amazon S3 执行 COPY 的操作

要从位于一个或多个 S3 存储桶中的文件加载数据,请使用 FROM 子句指示 COPY 在 Amazon S3 中查找文件的方式。您可以提供数据文件的对象路径作为 FROM 子句的一部分,也可以提供包含了 Amazon S3 对象路径列表的清单文件的位置。从 Amazon S3 执行 COPY 的操作将使用 HTTPS 连接。

重要

如果保存数据文件的 Amazon S3 存储桶未驻留在您的集群所在的区域内,则必须使用 REGION 参数指定数据所在的区域。

语法

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

示例

以下示例使用对象路径从 Amazon S3 加载数据。

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

以下示例使用清单文件从 Amazon S3 加载数据。

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

参数

FROM

要加载的数据的源。

's3://copy_from_s3_objectpath'

指定包含数据的 Amazon S3 对象的路径,例如 's3://mybucket/custdata.txt's3://copy_from_s3_objectpath 参数可引用单个文件或者具有相同键前缀的一组对象或文件夹。例如,名称 custdata.txt 是引用很多物理文件(custdata.txtcustdata.txt.1,等等)的键前缀。custdata.txt.2custdata.txt.bak键前缀还可以引用很多文件夹。例如,'s3://mybucket/custfolder' 引用文件夹 custfoldercustfolder_1,等等。custfolder_2如果键前缀引用多个文件夹,则将加载这些文件夹中的所有文件。如果键前缀与一个文件以及一个文件夹匹配,如 custfolder.log,COPY 还将尝试加载该文件。如果键前缀可能导致 COPY 尝试加载不需要的文件,请使用清单文件。有关更多信息,请参阅以下内容:copy_from_s3_manifest_file

重要

如果保存数据文件的 S3 存储桶未驻留在您的集群所在的区域内,则必须使用 REGION 参数指定数据所在的区域。

有关更多信息,请参阅 从 Amazon S3 加载数据

's3://copy_from_s3_manifest_file'

为列出了要加载的数据文件的清单文件指定 Amazon S3 对象键。's3://copy_from_s3_manifest_file' 参数必须显式引用单个文件,例如 's3://mybucket/manifest.txt'。它不能引用键前缀。

清单是 JSON 格式的文本文件,其中列出了要从 Amazon S3 加载的每个文件的 URL。URL 包含文件的存储桶名称和完整对象路径。在清单中指定的文件可以位于不同的存储桶中,但所有存储桶都必须位于 Amazon Redshift 集群所在的相同区域。如果某个文件被列出两次,那么该文件也会被加载两次。以下示例显示了加载三个文件的清单的 JSON。

Copy
{ "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 未找到该条目对应的文件时,该命令将会终止;否则,该命令将继续。 mandatory 的默认值为 false

不能对清单文件进行加密或压缩,即使指定了 ENCRYPTED、GZIP、LZOP 或 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 用户提供访问凭证(基于密钥的访问控制)来提供授权。为了提高安全性和灵活性,我们建议使用基于 IAM 角色的访问控制。有关更多信息,请参阅 授权参数

MANIFEST

指定使用一个清单来标识要从 Amazon S3 加载的数据文件。如果使用了 MANIFEST 参数,则 COPY 将从 's3://copy_from_s3_manifest_file' 引用的清单中列出的文件加载数据。如果未找到清单文件或清单文件的格式不正确,COPY 将失败。有关更多信息,请参阅 使用清单指定数据文件

ENCRYPTED

一个子句,指定 Amazon S3 上输入文件的加密方法为:利用客户管理的对称密钥进行客户端加密 (CSE-CMK)。有关更多信息,请参阅 从 Amazon S3 加载加密数据文件。如果输入文件的加密方法为 Amazon S3 服务器端加密 (SSE-KMS 或 SSE-S3),请不要指定 ENCRYPTED。COPY 会自动读取服务器端加密的文件。

如果您要指定 ENCRYPTED 参数,还必须指定 MASTER_SYMMETRIC_KEY 参数,或在 CREDENTIALS 字符串中包括 master_symmetric_key 值。

如果加密文件采用了压缩格式,请添加 GZIP、LZOP 或 BZIP2 参数。

MASTER_SYMMETRIC_KEY 'master_key'

用于在 Amazon S3 上加密数据文件的主对称密钥。如果指定了 MASTER_SYMMETRIC_KEY,还须指定 ENCRYPTED 参数。MASTER_SYMMETRIC_KEY 不能与 CREDENTIALS 参数配合使用。有关更多信息,请参阅 从 Amazon S3 加载加密数据文件

如果加密文件采用了压缩格式,请添加 GZIP、LZOP 或 BZIP2 参数。

REGION [AS] 'aws-region'

指定源数据所在的 AWS 区域。当包含该数据的 AWS 资源与 Amazon Redshift 集群不在同一区域时,从 Amazon S3 存储桶或 DynamoDB 表执行 COPY 的操作需要 REGION。

aws_region 的值必须与下表中所列的区域匹配。

区域名称 区域
美国东部(弗吉尼亚北部) us-east-1
美国东部 (俄亥俄) us-east-2
美国西部(加利福尼亚北部) us-west-1
美国西部(俄勒冈) us-west-2
亚太地区(孟买) ap-south-1
亚太区域(新加坡) ap-southeast-1
亚太区域(悉尼) ap-southeast-2
亚太区域(东京) ap-northeast-1
亚太区域(首尔) ap-northeast-2
加拿大 (中部) ca-central-1
中国(北京) cn-north-1
欧洲(法兰克福) eu-central-1
欧洲(爱尔兰) eu-west-1
欧洲 (伦敦) eu-west-2
南美洲(圣保罗) sa-east-1
AWS GovCloud (US) us-gov-west-1

如果指定了 REGION 参数,则所有资源(包括清单文件或多个 Amazon S3 存储桶)都必须位于指定区域内。

注意

对于包含数据的 Amazon S3 存储桶或 DynamoDB 表,跨区域传输数据将会产生额外费用。有关定价的更多信息,请参阅 Amazon S3 定价页上的数据自 Amazon S3 传出至其他 AWS 区域Amazon DynamoDB 定价页上的数据传出

默认情况下,COPY 假定数据位于 Amazon Redshift 集群所在的相同区域。

可选参数

对于从 Amazon S3 执行 COPY 的操作,还可以指定以下参数:

不支持的参数

对于从 Amazon S3 执行 COPY 的操作,不能使用以下参数:

  • SSH

  • READRATIO