Share via


CREATE SCHEMA

Aplica-se a:marca de seleção positiva Databricks SQL caixa de seleção marcada 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

  • schema_name

    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, use MANAGED LOCATION.

    schema_directory é uma literal de STRING. 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ática spark.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.

  • 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, use LOCATION em vez disso.

    location_path deve ser uma literal de STRING. 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égio CREATE 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 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 ou DECIMAL. O valor também pode ser uma chamada para a função SQL SECRET. Por exemplo, o value para a password pode ser composto de secret('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))