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


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).

  • ЕСЛИ НЕ СУЩЕСТВУЕТ

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

  • МЕСТОПОЛОЖЕНИЕ schema_directory

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

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

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

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

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

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

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

    Литерал STRING . Описание схемы.

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

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

    location_path должен быть литералом STRING . Указывает путь к корневому расположению хранилища для схемы, отличной от корневого расположения каталога или хранилища метаданных. Этот путь должен быть определен в конфигурации внешнего расположения, и у вас должна CREATE MANAGED STORAGE быть привилегия в конфигурации внешнего расположения. Можно использовать путь, определенный в конфигурации внешнего расположения или подпате (другими словами, 'abfss://[email protected]/finance' или 'abfss://[email protected]/finance/product'). Поддерживается в Databricks SQL или в кластерах под управлением Databricks Runtime 11.3 LTS и более поздних версий.

    См. также управляемые таблицы каталога Unity в Azure Databricks для Delta Lake и Apache Iceberg исоздание хранилища метаданных каталога Unity.

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

    Свойства схемы, представленные в виде пар "ключ-значение".

  • ПАРАМЕТРЫ

    Задает параметры конкретного типа подключения, необходимые для идентификации каталога в соединении.

    • 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://[email protected]/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))