使用 TEMPLATE 进行 COPY - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

从补丁 198 开始,Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息,请参阅博客文章

使用 TEMPLATE 进行 COPY

您可以将 Redshift 模板与 COPY 命令结合使用,以简化命令语法并确保数据加载操作间的一致性。无需重复指定相同的格式化参数,而是在模板中定义它们一次,然后在 COPY 命令中引用模板。使用模板时,COPY 命令会将模板中的参数与在命令中直接指定的任何参数相结合。如果同一个参数同时出现在模板和命令中,则命令参数优先。有关更多信息,请参阅 CREATE TEMPLATE

可以使用以下各项创建 COPY 命令的模板:

有关支持的参数的完整列表,请参阅 COPY 命令。

所需的权限

要在 COPY 命令中使用模板,您必须拥有:

  • 执行 COPY 命令所需的所有权限(请参阅所需的权限

  • 以下模板权限之一:

    • 超级用户权限

    • 对模板拥有 USAGE 权限,并对包含模板的架构拥有 USAGE 权限

语法

COPY target_table FROM 's3://...' authorization [ option, ...] USING TEMPLATE [database_name.][schema_name.]template_name;

参数

database_name

(可选)模板所在数据库的名称。如果未指定,则使用当前数据库。

schema_name

(可选)模板所在架构的名称。如果未指定,则在当前搜索路径中搜索模板。

template_name

COPY 中要使用的模板的名称。

使用说明

  • 仍必须在 COPY 命令中指定特定于命令的参数(源、目标、授权)。

  • 模板不能包含 COPY 命令的清单文件规范。

示例

以下示例演示如何创建模板并在 COPY 命令中使用它:

CREATE TEMPLATE public.test_template FOR COPY AS CSV DELIMITER '|' IGNOREHEADER 1 MAXERROR 100; COPY public.target_table FROM 's3://amzn-s3-demo-bucket/staging-folder' IAM_ROLE 'arn:aws:iam::123456789012:role/MyLoadRoleName' USING TEMPLATE public.test_template;

当某个参数同时存在于模板和命令中时,命令参数优先。在此示例中,如果模板 public.test_template 包含 DELIMITER '|',但 COPY 命令指定 DELIMITER ',',则将使用命令中的逗号分隔符 (,),而不是模板中的管道分隔符 (|)。

COPY public.target_table FROM 's3://amzn-s3-demo-bucket/staging-folder' IAM_ROLE 'arn:aws:iam::123456789012:role/MyLoadRoleName' DELIMITER ',' USING TEMPLATE public.test_template;