CREATE SCHEMA - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

CREATE SCHEMA

為目前資料庫定義新的結構描述。

所需權限

以下是 CREATE 的必要權限SCHEMA:

  • 超級使用者

  • 具有 CREATESCHEMA權限的使用者

語法

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

此子句會指出,若指定的結構描述已存在,則命令不應進行任何變更,且應傳回結構描述存在的訊息,而不是在發生錯誤的情況下終止。

此子句在指令碼時很有用,因此如果CREATESCHEMA嘗試建立已存在的結構描述,指令碼不會失敗。

schema_name

新結構描述的名稱。結構描述名稱不可以是 PUBLIC。如需有效名稱的相關資訊,請參閱 名稱與識別碼

注意

search_path 組態參數中結構描述的清單會決定,在沒有結構描述名稱的情況下參考名稱相同的物件時,這些物件的優先順序。

AUTHORIZATION

將所有權提供給指定使用者的子句。

username

結構描述擁有者的名稱。

schema_element

要在結構描述內建立的一個或多個物件的定義。

QUOTA

所指定之結構描述可以使用的磁碟空間數上限。這個空間是集體磁碟使用量。它包含所有永久資料表、指定結構描述下的具體化檢視,以及在每個運算節點上ALL分佈的所有資料表複本。結構描述配額不會將暫時資料表納入考量,此暫時資料表是作為暫時命名空間或結構描述一部分而建立的。

若要檢視設定的結構描述配額,請參閱 SVV_SCHEMA_QUOTA_STATE

若要檢視超出結構描述配額的記錄,請參閱 STL_SCHEMA_QUOTA_VIOLATIONS

Amazon Redshift 會將選取的值轉換為 MB。GB 是您未指定值時的預設測量單位。

您必須是資料庫超級使用者,才能設定和變更結構描述配額。非超級使用者但具有 CREATE SCHEMA 許可的使用者可以建立具有定義配額的結構描述。當您在未定義配額的情況下建立結構描述時,結構描述會有無限的配額。當您將配額設為低於結構描述所使用的目前值時,除非您釋放磁碟空間,否則 Amazon Redshift 不允許進一步擷取。DELETE 陳述式會從資料表中刪除資料,且僅在VACUUM執行時釋放磁碟空間。

Amazon Redshift 會在確認交易之前檢查每筆交易是否存在配額違規情況。Amazon Redshift 會根據設定的配額,檢查每個已修改結構描述的大小 (結構描述中所有資料表使用的磁碟空間)。因為配額違規檢查發生在交易結束時,所以在確定之前,大小限制可以暫時超過交易內的配額。當交易超過配額時,Amazon Redshift 會停止交易、禁止後續導入,並還原所有變更,直到您釋放磁碟空間為止。由於背景VACUUM和內部清除,在您取消交易後檢查結構描述時,結構描述可能尚未完全完成。

在例外情況下,Amazon Redshift 會忽略配額違規,並在特定情況下遞交交易。Amazon Redshift 會針對僅包含下列一或多個陳述式的交易執行此操作,其中相同交易中沒有 INSERT或 COPY 擷取陳述式:

  • DELETE

  • TRUNCATE

  • VACUUM

  • DROP TABLE

  • ALTER TABLE APPEND 只有在將資料從完整結構描述移至其他非完整結構描述時

UNLIMITED

Amazon Redshift 不會限制結構描述總大小的增長。

限制

Amazon Redshift 會對結構描述強制實施下列限制。

  • 每個資料庫最多 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;