CREATE TEMPLATE - Amazon Redshift

Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、ブログ記事を参照してください。

CREATE TEMPLATE

COPY などの Amazon Redshift コマンドの再利用可能なテンプレートを作成します。テンプレートには、複数のコマンド実行で参照できるよく使用されるパラメータが保存されるため、一貫性が向上し、手動でのパラメータ指定が削減されます。

テンプレートを使用すると、ソースパス、ターゲットテーブル、認可がオペレーションによって異なる場合でも、複数のオペレーションで同じ形式パラメータを繰り返し指定する必要がなくなります。

必要な権限

テンプレートを作成するには、次のいずれかが必要です。

  • スーパーユーザー権限

  • テンプレートを作成するスキーマに対する 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_harvest または sys: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 オペレーションのデータ形式を指定します。

[ パラメータ [ 引数 ]]

指定された Redshift コマンドの有効なパラメータ。

例えば、COPY コマンドのテンプレートには以下を含めることができます。

サポートされているパラメータの完全なリストについては、「COPY」コマンドを参照してください。

使用に関する注意事項

  • デフォルトでは、すべてのユーザーは PUBLIC スキーマに対して、CREATE 権限と USAGE 権限を所有しています。ユーザーがデータベースの PUBLIC スキーマにオブジェクトを作成できないようにするには、REVOKE コマンドを使用してその権限を削除します。

  • テンプレートとコマンドの両方にパラメータが存在する場合、コマンドパラメータが優先されます。

  • テンプレートはデータベースオブジェクトであり、標準の Redshift オブジェクトの命名規則とアクセス許可ルールに従います。有効な名前の詳細については、「名前と識別子」を参照してください。

  • テンプレートには、COPY コマンドのマニフェストファイルの仕様を含めることはできません。

制限事項

  • テンプレートを作成するときは、少なくとも 1 つのパラメータを指定する必要があります。

  • 除外されるパラメータ – ソースパス、ターゲットテーブル、認可の認証情報、マニフェストファイルの仕様などのコマンド固有のパラメータをテンプレートに含めることはできません。これらのパラメータは、実際のコマンドで指定する必要があります。

  • クラスターあたりの最大テンプレート数 – クラスターあたり最大 1,000 個のテンプレートを作成できます。この制限は、クラスター内のすべてのデータベースとスキーマのテンプレートの合計数に適用されます。

  • クロスデータベース参照 – テンプレートはデータベース間で参照できません。

  • データ共有 – テンプレートをデータ共有に含めることはできません。テンプレートは、必要なクラスターごとに個別に作成する必要があります。

次の例では、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": "" }