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

    创建具有给定名称的架构(如果不存在)。 如果已存在同名架构,则不会执行任何操作。

  • LOCATION schema_directory

    Unity Catalog 不支持 LOCATION。 如果要在 Unity Catalog 中指定架构的存储位置,请使用 MANAGED LOCATION

    schema_directorySTRING 文本。 要在其中创建指定架构的文件系统的路径。 如果基础文件系统中不存在指定的路径,则使用该路径创建一个目录。 如果未指定位置,则在默认仓库目录中创建架构,其路径由静态配置 spark.sql.warehouse.dir 进行配置。

    警告

    如果在工作区级别的 Hive 元存储中注册了架构(数据库),则使用 CASCADE 选项删除该架构会导致递归删除该架构位置中的所有文件,而不管表类型(托管或外部)如何。

    如果架构已注册到 Unity Catalog 元存储,Unity Catalog 托管表的文件将被递归删除。 但是,不会删除外部表的文件。 必须直接使用云存储提供商来管理这些文件。

    因此,为避免数据意外丢失,永远不应将 Hive 元存储中的架构注册到具有现有数据的位置。 也不应在由 Hive 元存储架构管理的位置或包含 Unity Catalog 托管表的位置创建新的外部表。

  • 注释 schema_comment

    STRING 文本。 架构说明。

  • MANAGED LOCATION location_path

    MANAGED LOCATION 是可选的,需要 Unity Catalog。 如果要为在工作区级别 Hive 或第三方元存储中注册的架构指定存储位置,请改用 LOCATION

    location_path 必须是 STRING 文本。 指定架构的存储根位置路径,该位置不同于目录的或元存储的存储根位置。 必须在外部位置配置中定义此路径,并且必须对外部位置配置具有 CREATE MANAGED STORAGE 权限。 可以使用在该外部位置配置中定义的路径,也可以使用子路径(即 'abfss://container@storageaccount.dfs.core.chinacloudapi.cn/finance''abfss://container@storageaccount.dfs.core.chinacloudapi.cn/finance/product')。 在 Databricks SQL 中或运行 Databricks Runtime 11.3 LTS 及更高版本的群集上受支持。

    另请参阅使用托管表创建 Unity Catalog 元存储

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

    以键值对形式表示的架构属性。

  • OPTIONS

    设置在连接处标识目录所需的特定于连接类型的参数。

    • option

      选项键。 该键可以由一个或多个以点分隔的标识符STRING文本组成。

      选项键必须唯一且区分大小写。

    • value

      选项的值。 该值必须是 BOOLEANSTRINGINTEGERDECIMAL 常量表达式。 该值也可以是对 SECRET SQL 函数的调用。 例如,valuepassword 可以包含 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.chinacloudapi.cn/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))