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.
Схемы, созданные в
hive_metastore
catalog, могут содержать только буквенно-цифровые символы 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
,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))