CREATE SCHEMA - Amazon Redshift

CREATE SCHEMA

現在のデータベースの新しいスキーマを定義します。

構文

CREATE SCHEMA [ IF NOT EXISTS ] schema_name [ AUTHORIZATION username ] [ QUOTA {quota [MB | GB | TB] | UNLIMITED} ] [ schema_element [ ... ] CREATE SCHEMA AUTHORIZATION username[ QUOTA {quota [MB | GB | TB] | UNLIMITED} ] [ schema_element [ ... ] ]

パラメータ

IF NOT EXISTS

指定されたスキーマが既に存在する場合、コマンドはエラーで終了するのではなく、何も変更しないで、スキーマが存在するというメッセージを返すことを示す句。

この句は、CREATE SCHEMA で既存のスキーマを作成しようとしてもスクリプトが失敗しないため、スクリプトを作成する際に便利です。

schema_name

新しいスキーマの名前。スキーマ名を PUBLIC にすることはできません。有効な名前の詳細については、「名前と識別子」を参照してください。

注記

search_path 設定パラメータのスキーマリストによって、スキーマ名を指定せずに同じ名前のオブジェクトが参照されたときに、優先するオブジェクトが決まります。

AUTHORIZATION

指定されたユーザーに所有権を付与する句。

username

スキーマ所有者の名前。

schema_element

スキーマ内に作成する 1 つまたは複数のオブジェクトの定義。

QUOTA

指定したスキーマが使用できる最大ディスク容量。この容量は総ディスク使用量です。これには、各コンピューティングノードのすべてのディストリビューションのすべての永続テーブル、指定したスキーマのマテリアライズドビュー、すべてのテーブルの複製されたコピーが含まれます。スキーマのクォータでは、一時的な名前空間またはスキーマの一部として作成される一時テーブルは考慮されません。

Amazon Redshift は選択した値をメガバイトに変換します。値を指定しない場合、デフォルトの測定単位はギガバイトです。

スキーマのクォータを設定および変更するには、データベースのスーパーユーザーである必要があります。スーパーユーザーではなくても、CREATE SCHEMA 権限を持つユーザーは、クォータを定義してスキーマを作成できます。クォータを定義せずにスキーマを作成すると、スキーマのクォータは無制限になります。クォータをスキーマで現在使用されている値よりも低く設定した場合、Amazon Redshift ではディスク容量を解放するまでそれ以上の取り込みを行うことはできません。DELETE ステートメントはテーブルからデータを削除するものであり、ディスク容量は VACUUM が実行された場合にのみ解放されます。

Amazon Redshift は、それぞれのトランザクションをコミットする前に、トランザクションにクォータ違反がないかをチェックします。Amazon Redshift は、変更された各スキーマのサイズ (スキーマのすべてのテーブルで使用されるディスク容量) を、設定されたクォータに対してチェックします。クォータ違反のチェックはトランザクションの最後に行われるため、トランザクションをコミットする前にトランザクションでクォータを一時的に超過する場合があります。トランザクションがクォータを超過した場合、Amazon Redshift はトランザクションを中止し、後続の取り込みを禁止し、ディスク容量を解放するまですべての変更を元に戻します。バックグラウンドの VACUUM と内部のクリーンアップのため、トランザクションを中止した後にスキーマをチェックするまでにスキーマのサイズに空きができる場合があります。

例外として、Amazon Redshift は特定の場合にクォータ違反を無視してトランザクションをコミットします。Amazon Redshift は、同じスキーマに取り込みの INSERT または COPY ステートメントがない次の 1 つ以上のステートメントのみで構成されるトランザクションに対してこれを行います。

  • DELETE

  • TRUNCATE

  • VACUUM

  • DROP TABLE

  • ALTER TABLE APPEND (サイズに空きのないスキーマから空きのあるスキーマにデータを移動する場合のみ)

UNLIMITED

Amazon Redshift は、スキーマの合計サイズの増加に制限を課しません。

制限

Amazon Redshift では、スキーマに次の制限があります。

  • スキーマの数は 1 つのデータベースにつき最大 9900 個です。

次の例では、US_SALES というスキーマを作成し、DWUSER というユーザーに所有権を付与します。

create schema us_sales authorization dwuser;

次の例では、US_SALES というスキーマを作成し、DWUSER というユーザーに所有権を付与し、クォータを 50 GB に設定します。

create schema us_sales authorization dwuser QUOTA 50 GB;

新しいスキーマを確認するには、次に示すように PG_NAMESPACE カタログテーブルに対してクエリを実行します。

select nspname as schema, usename as owner from pg_namespace, pg_user where pg_namespace.nspowner = pg_user.usesysid and pg_user.usename ='dwuser'; schema | owner ----------+---------- us_sales | dwuser (1 row)

次の例では、US_SALES スキーマを作成します。そのスキーマが既に存在する場合は、何もしないでメッセージを返します。

create schema if not exists us_sales;