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


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

    LOCATION не поддерживается в каталоге Unity. Если вы хотите указать расположение хранилища для схемы в каталоге 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

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

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

    • value

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