CREATE SCHEMA

適用於: 核取記號為「是」Databricks SQL 核取記號為「是」Databricks Runtime

建立具有指定名稱結構描述 (資料庫)。 如果已經有相同名稱的結構描述存在,則會擲回例外狀況。

語法

CREATE SCHEMA [ IF NOT EXISTS ] schema_name
    [ COMMENT schema_comment ]
    [ LOCATION schema_directory | MANAGED LOCATION location_path ]
    [ WITH DBPROPERTIES ( { property_name = property_value } [ , ... ] ) ]

參數

  • schema_name

    要建立的結構描述的名稱。

    hive_metastore 目錄中建立的結構描述只能包含英數字元 ASCII 字元和底線 (INVALID_SCHEMA_OR_RELATION_NAME)。

  • IF NOT EXISTS

    如果結構描述不存在,則建立具有指定名稱的結構描述。 如果具有相同名稱的結構描述已經存在,則不會發生任何動作。

  • 位置 schema_directory

    Unity 目錄中不支援 LOCATION。 如果您要在 Unity 目錄中指定結構描述的儲存位置,請使用 MANAGED LOCATION

    schema_directorySTRING 常值。 要在其中建立指定結構描述之檔案系統的路徑。 如果基礎檔案系統中沒有指定的路徑,請建立具有路徑的目錄。 如果未指定位置,則會在預設倉儲目錄中建立結構描述,其路徑由靜態組態 spark.sql.warehouse.dir 所設定。

    警告

    如果在工作區層級 Hive 中繼存放區中註冊結構描述 (資料庫),則使用 CASCADE 選項卸除該結構描述會導致該結構描述位置中的所有檔案以遞歸方式刪除,而不論其資料表類型為何 (受控或外部)。

    如果結構描述註冊至 Unity 目錄中繼存放區,則會以遞歸方式刪除 Unity 目錄受控資料表的檔案。 不過,不會刪除外部資料表的檔案。 您必須直接使用雲端儲存體提供者來管理這些檔案。

    因此,為了避免意外遺失資料,絕對不應該在 Hive 中繼存放區中向具有現有資料的位置註冊結構描述。 您也不應該在 Hive 中繼存放區結構描述或包含 Unity 目錄受控資料表的位置建立新的外部資料表。

  • 註解 schema_comment

    STRING 常值。 結構描述的描述。

  • 管理的位置 location_path

    MANAGED LOCATION 是選擇性的,並且需要 Unity 目錄。 如果您要為工作區層級 Hive 或第三方中繼存放區中註冊的結構描述指定儲存位置,請改用 LOCATION

    location_path 必須是 STRING 常值。 指定與目錄或中繼存放區儲存體根位置不同的結構描述之儲存體根位置的路徑。 此路徑必須在外部位置組態中定義,而且您必須具有外部位置組態的 CREATE MANAGED STORAGE 權限。 您可以使用外部位置組態或子路徑中定義的路徑 (換句話說,'abfss://container@storageaccount.dfs.core.windows.net/finance''abfss://container@storageaccount.dfs.core.windows.net/finance/product')。 在 Databricks SQL 或執行 Databricks Runtime 11.3 LTS 和更新版本之叢集上受支援。

    另請參閱使用受控資料表建立 Unity 目錄中繼存放區

  • WITH DBPROPERTIES ( { property_name = property_value } [, …] )

    索引鍵/值組中結構描述的屬性。

  • OPTIONS

    設定連線時識別目錄所需連線類型的特定參數。

    • option

      Option 鍵。 該鍵可以包含一或多個以點分隔的識別碼,或是 STRING 常值。

      Option 鍵必須是唯一的,而且區分大小寫。

    • value

      該選項的值。 該值必須是 BOOLEANSTRINGINTEGERDECIMAL 常數運算式。 此值也可能是 SECRET SQL 函式的呼叫。 例如,passwordvalue 可能會包含 secret('secrets.r.us', 'postgresPassword'),無需輸入常值密碼。

範例

-- Create schema `customer_sc`. This throws exception if schema with name customer_sc
-- already exists.
> CREATE SCHEMA customer_sc;

-- Create schema `customer_sc` only if schema with same name doesn't exist.
> CREATE SCHEMA IF NOT EXISTS customer_sc;

-- Create schema `customer_sc` only if schema with same name doesn't exist with
-- `Comments`,`Specific Location` and `Database properties`. LOCATION is not supported in Unity Catalog.
> CREATE SCHEMA IF NOT EXISTS customer_sc COMMENT 'This is customer schema' LOCATION '/samplepath'
    WITH DBPROPERTIES (ID=001, Name='John');

-- Create schema with a different managed storage location than the metastore's. MANAGED LOCATION is supported only in Unity Catalog.
> CREATE SCHEMA customer_sc MANAGED LOCATION 'abfss://container@storageaccount.dfs.core.windows.net/finance';

-- Verify that properties are set.
> DESCRIBE SCHEMA EXTENDED customer_sc;
database_description_item database_description_value
------------------------- --------------------------
            Database Name                customer_sc
              Description  This is customer schema
                  Location      hdfs://hacluster/samplepath
                Properties    ((ID,001), (Name,John))