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

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

CREATE TEMPLATE

为 Amazon Redshift 命令(例如 COPY)创建可重用的模板。模板存储可在多个命令执行中引用的常用参数,从而提高一致性并减少手动参数规范。

模板消除了在多个操作中重复指定相同格式化参数的需要,而源路径、目标表和授权可能因操作而异。

所需的权限

要创建模板,您必须拥有以下其中一项:

  • 超级用户权限

  • 对要在其中创建模板的架构拥有 CREATE 权限,或者对要在其中创建模板的数据库中的架构拥有 CREATE 限定范围权限

语法

CREATE [ OR REPLACE ] TEMPLATE [database_name.][schema_name.]template_name FOR COPY [ AS ] [ [ FORMAT ] [ AS ] data_format ] [ parameter [ argument ] [ , ... ] ];

参数

OR REPLACE

如果指定的数据库和架构中已存在同名的模板,则将替换现有模板。您只能将模板替换为定义相同操作类型的新模板,例如 COPY。您必须具有替换模板所需的权限。

database_name

(可选)将在其中创建模板的数据库的名称。如果未指定,则在当前数据库中创建模板。

如果数据库或架构不存在,则不会创建模板,并且语句将返回错误。您无法在系统数据库 template0template1padb_harvestsys:internal 中创建模板。

schema_name

(可选)将在其中创建模板的架构的名称。如果未指定,则在当前架构中创建模板。

如果提供了架构名称,则在该架构中创建新模板(假定创建者有权访问架构)。模板名称必须是该架构中的唯一名称。

template_name

要创建的模板的名称。(可选)可以使用数据库名称和架构名称来限定模板名称。在下面的示例中,demo_database 是数据库名称,demo_schema 是架构名称,而 test 是模板名称。有关有效名称的更多信息,请参阅名称和标识符

CREATE TEMPLATE demo_database.demo_schema.test FOR COPY AS CSV;
COPY

指定为其创建模板的 Redshift 命令类型。目前仅支持 COPY 命令。

[ [ FORMAT ] [ AS ] data_format ]

此参数为可选参数。这指定了 COPY 操作的数据格式。

[ parameter [ argument ]]

指定的 redshift 命令的任何有效参数。

例如,COPY 命令的模板可能包括:

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

使用说明

  • 默认情况下,所有用户都对 PUBLIC schema 具有 CREATE 和 USAGE 权限。要禁止用户在数据库的 PUBLIC schema 中创建对象,请使用 REVOKE 命令删除该权限。

  • 当某个参数同时存在于模板和命令中时,命令参数优先。

  • 模板是数据库对象,并遵循标准的 Redshift 对象命名和权限规则。有关有效名称的更多信息,请参阅名称和标识符

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

限制

  • 创建模板时,必须指定至少一个参数。

  • 排除的参数:模板中不能包含特定于命令的参数,例如源路径、目标表、授权凭证和清单文件规范。这些参数必须在实际命令中指定。

  • 每个集群的最大模板数量:每个集群最多可以创建 1000 个模板。此限制适用于集群中所有数据库和架构的模板总数。

  • 跨数据库引用:不能跨数据库引用模板。

  • 数据共享:模板不能包含在数据共享中。必须在需要模板的每个集群中单独创建模板。

示例

以下示例为 COPY 命令创建一个模板

CREATE TEMPLATE test_schema.demo_template FOR COPY AS FORMAT JSON 'auto' NULL AS '' MAXERROR 100;

使用 SHOW TEMPLATE 获取模板的定义:

SHOW TEMPLATE test_schema.demo_template; CREATE OR REPLACE TEMPLATE dev.test_schema.demo_template FOR COPY AS FORMAT AS JSON 'auto' NULL '' MAXERROR 100;

查询 SYS_REDSHIFT_TEMPLATE 系统视图以获取有关模板的更多详细信息。

SELECT * FROM SYS_REDSHIFT_TEMPLATE; database_name | schema_name | template_name | template_type | create_time | last_modified_time | owner_id | last_modified_by | template_parameters ---------------+-------------+---------------+---------------+----------------------------+----------------------------+----------+------------------+--------------------- dev | test_schema | demo_template | 1 | 2025-12-17 20:06:01.944171 | 2025-12-17 20:06:01.944171 | 1 | 1 | { "JSON": "auto", "MAXERROR": 100, "NULL": "" }