Поделиться через


CREATE SCHEMA

Область применения:флажок Databricks SQL флажок Databricks Runtime

Создает schema (базу данных) с указанным именем. Если schema с тем же именем уже существует, выбрасывается исключение.

Синтаксис

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

Parameters

  • schema_name

    Наименование для создаваемого schema.

    Схемы, созданные в hive_metastorecatalog, могут содержать только буквенно-цифровые символы ASCII и символы подчеркивания (INVALID_SCHEMA_OR_RELATION_NAME).

  • IF NOT EXISTS

    Создает schema с заданным именем, если оно не существует. Если объект schema с таким же именем уже существует, ничего не произойдет.

  • LOCATION schema_directory

    LOCATION не поддерживается в Unity Catalog. Если вы хотите указать расположение хранилища для schema в Unity Catalog, используйте MANAGED LOCATION.

    schema_directory STRING— это литерал. Путь к файловой системе, в которой необходимо создать указанный schema. Если указанный путь не существует в файловой системе, создается каталог с этим путем. Если расположение не указано, schema создается в каталоге хранилища по умолчанию, путь которого настраивается статической конфигурацией spark.sql.warehouse.dir.

    Предупреждение

    Если база данных schema зарегистрирована в хранилище метаданных Hive на уровне рабочего пространства, удаление этой базы данных schema с помощью опции CASCADE приводит к рекурсивному удалению всех файлов в этом местоположении schema независимо от типа table (управляемый или внешний).

    Если schema зарегистрирован в хранилище метаданных Unity Catalog, файлы для Unity Catalog, которыми управляет tables, удаляются рекурсивно. Однако файлы, относящиеся к внешнему tables, не удаляются. Эти файлы необходимо управлять напрямую с помощью поставщика облачных хранилищ.

    Таким образом, чтобы избежать случайной потери данных, никогда не следует заносить schema в хранилище метаданных Hive в место с уже существующими данными. Не следует создавать новые внешние tables в расположении, которое управляется схемами метахранилища Hive, или содержащее объекты, управляемые Unity Catalogtables.

  • КОММЕНТАРИЙ schema_comment

    Литерал STRING . Описание schema.

  • УПРАВЛЯЕМОЕ РАСПОЛОЖЕНИЕ location_path

    MANAGED LOCATION является необязательным и требует Unity Catalog. Если вы хотите указать расположение хранилища для schema, зарегистрированного в вашем хранилище метаданных уровня рабочей области или в стороннем хранилище метаданных, вместо этого используйте LOCATION.

    location_path должен быть литералом STRING . Указывает путь к корневому расположению хранилища для schema, который отличается от корневого расположения хранилища для catalogили метахранилища. Этот путь должен быть определен в конфигурации внешнего расположения, и у вас должна 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 и более поздних версий.

    См. также Работа с управляемыми tables и Catalogхранилища метаданных Unity.

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

    Свойства для schema в парах ключ-значение.

  • OPTIONS

    Задает конкретный тип подключения parameters, необходимый для идентификации catalog на подключении.

    • option

      Ключ параметра. Ключ может состоять из одного или нескольких идентификаторов, разделенных точкой или STRING литералом.

      Ключи параметров должны быть уникальными и чувствительны к регистру.

    • value

      Значение параметра. Значение должно быть выражением BOOLEAN, STRINGINTEGERили DECIMAL константой. Это значение также может быть вызовом 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.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))