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 } [ , ... ] ) ]
Параметры
-
Имя схемы, которую нужно создать.
Схемы, созданные в каталоге
hive_metastore
, могут содержать только буквенно-цифровые символы ASCII и символы подчеркивания (INVALID_SCHEMA_OR_RELATION_NAME). IF NOT EXISTS
Создает схему с указанным именем, если она не существует. Если схема с подобным именем уже существует, ничего не произойдет.
LOCATION
schema_directory
LOCATION
не поддерживается в каталоге Unity. Если вы хотите указать расположение хранилища для схемы в каталоге Unity, используйтеMANAGED LOCATION
.schema_directory
STRING
— это литерал. Путь к файловой системе, в которой должна быть создана указанная схема. Если указанный путь не существует в файловой системе, создается каталог с этим путем. Если расположение не указано, схема создается в каталоге хранилища по умолчанию, путь к которому задается статической конфигурацией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
,STRING
INTEGER
или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))