CREATE SCHEMA - Amazon Redshift

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

CREATE SCHEMA

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

必要的權限

以下是創建架構所需的權限:

  • 超級使用者

  • 具有「創建架構」權限的用户

Syntax (語法)

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

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

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 忽略了配額違規,並在某些情況下提交交易。對於僅由一個或多個下列陳述式組成的交易執行下列動作,其中相同交易中沒有 INSERAmazon Redshift 或 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;