CREATE SCHEMA
Aplica-se a: SQL do Databricks Azure Databricks Runtime
Cria um banco de dados (esquema) com o nome especificado. Se já existir um esquema com o mesmo nome, será gerada uma exceção.
Sintaxe
CREATE SCHEMA [ IF NOT EXISTS ] schema_name
[ COMMENT schema_comment |
{ LOCATION schema_directory | MANAGED LOCATION location_path } |
WITH DBPROPERTIES ( { property_name = property_value } [ , ... ] ) ] [...]
Parâmetros
-
O nome do esquema a ser criado.
Os esquemas criados no catálogo
hive_metastore
só podem conter caracteres alfanuméricos ASCII e sublinhados (INVALID_SCHEMA_OR_RELATION_NAME). IF NOT EXISTS
Criará um esquema com o nome fornecido, se ele não existir. Se já existir um esquema com o mesmo nome, nada acontecerá.
LOCAL
schema_directory
LOCATION
não tem suporte no Catálogo do Unity. Se você quiser especificar um local de armazenamento para um esquema no Catálogo do Unity, useMANAGED LOCATION
.schema_directory
é uma literal deSTRING
. O caminho do sistema de arquivos no qual o esquema especificado será criado. Se o caminho especificado não existir no sistema de arquivos subjacente, um diretório será criado com o caminho. Se o local não for especificado, o esquema será criado no diretório de depósito padrão, cujo caminho é definido pela configuração estáticaspark.sql.warehouse.dir
.Aviso
Se um esquema (banco de dados) for registrado no metastore do Hive no nível do workspace, o descarte desse esquema usando a opção
CASCADE
fará com que todos os arquivos nesse local de esquema sejam excluídos recursivamente, independentemente do tipo de tabela (gerenciada ou externa).Se o esquema estiver registrado em um metastore do Catálogo do Unity, os arquivos das tabelas gerenciadas do Catálogo do Unity serão excluídos recursivamente. No entanto, os arquivos de tabelas externas não serão excluídos. Você deve gerenciar esses arquivos usando diretamente o provedor de armazenamento em nuvem.
Portanto, para evitar a perda acidental de dados, você nunca deve registrar um esquema em um metastore do Hive em um local em que já haja dados. Você também não deve criar novas tabelas externas em um local gerenciado por esquemas de metastore do Hive nem que contenha tabelas gerenciadas do Catálogo do Unity.
COMMENT
schema_comment
Uma literal de
STRING
. A descrição do esquema.MANAGED LOCATION
location_path
MANAGED LOCATION
é opcional e requer o Catálogo do Unity. Se você quiser especificar um local de armazenamento para um esquema registrado em seu Hive no nível do workspace ou metastore de terceiros, useLOCATION
em vez disso.location_path
deve ser uma literal deSTRING
. Especifica o caminho para um local raiz de armazenamento para o esquema que é diferente do local raiz de armazenamento do metastore ou do catálogo. Esse caminho deve ser definido em uma configuração de localização externa e você deve ter o privilégioCREATE MANAGED STORAGE
nessa configuração. É possível usar o caminho definido na configuração de localização externa ou um subcaminho (ou seja,'abfss://container@storageaccount.dfs.core.windows.net/finance'
ou'abfss://container@storageaccount.dfs.core.windows.net/finance/product'
). Com suporte no Databricks SQL ou em clusters que executam o Databricks Runtime 11.3 LTS e posteriores.Confira também Trabalhara com tabelas gerenciadas e Criar um metastore do Catálogo do Unity.
WITH DBPROPERTIES ( { property_name = property_value } [ , … ] )
As propriedades do esquema em pares chave-valor.
OPÇÕES
Define os parâmetros específicos do tipo de conexão necessários para identificar o catálogo na conexão.
option
A chave de opção. A chave pode consistir de um ou mais identificadores separados por um ponto ou uma literal de
STRING
.As chaves de opção devem ser exclusivas e diferenciar maiúsculas de minúsculas.
value
O valor para a opção. O valor deve ser uma expressão de constante
BOOLEAN
,STRING
,INTEGER
ouDECIMAL
. O valor também pode ser uma chamada para a função SQLSECRET
. Por exemplo, ovalue
para apassword
pode ser composto desecret('secrets.r.us', 'postgresPassword')
em vez de inserir a senha literal.
Exemplos
-- 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))