从列式数据格式中执行 COPY 操作
COPY 可采用以下列式格式从 Amazon S3 中加载数据:
-
ORC
-
Parquet
有关从列式数据格式中使用 COPY 的示例,请参阅COPY 示例。
COPY 支持列式数据,但要注意以下几点:
-
Amazon S3 桶必须与 Amazon Redshift 数据库位于同一 AWS 区域。
-
要通过 VPC 端点访问您的 Amazon S3 数据,请使用 IAM 策略和 IAM 角色设置访问权限,如《Amazon Redshift 管理指南》中的将 Amazon Redshift Spectrum 与增强 VPC 路由结合使用中所述。
-
COPY 不自动应用压缩编码。
-
仅支持以下 COPY 参数:
-
ACCEPTINVCHARS(从 ORC 或 Parquet 文件中复制时)。
-
-
如果 COPY 在加载时遇到错误,则命令失败。列式数据类型不支持 ACCEPTANYDATE 和 MAXERROR。
错误消息发送至 SQL 客户端。一些错误记录在 STL_LOAD_ERRORS 和 STL_ERROR 中。
-
COPY 会按列在列式数据文件中出现的相同顺序将值插入到目标表的列中。目标表中的列数和数据文件中的列数必须匹配。
-
如果您为 COPY 操作指定的文件包含下列扩展名之一,我们将解压缩数据,而无需添加任何参数:
.gz
.snappy
.bz2
从 Parquet 和 ORC 文件格式的 COPY 操作使用 Redshift Spectrum 和桶访问。要对这些格式执行 COPY 操作,请确保没有任何阻止使用 Amazon S3 预签名 URL 的 IAM 策略。Amazon Redshift 生成的预签名 URL 有效期为 1 小时,这样 Amazon Redshift 就有足够的时间从 Amazon S3 存储桶中加载所有文件。COPY 操作从列式数据格式中扫描的每个文件都会生成一个唯一的预签名 URL。对于包含
s3:signatureAge
操作的存储桶策略,请确保将该值至少设置为 3,600,000 毫秒。有关更多信息,请参阅将 Amazon Redshift Spectrum 与增强型 VPC 路由结合使用。