CREATE SCHEMA

S’applique à :case marquée oui Databricks SQL oui coché Databricks Runtime

Crée un schéma (base de données) du nom spécifié. S’il existe déjà un schéma du même nom, une exception est levée.

Syntaxe

CREATE SCHEMA [ IF NOT EXISTS ] schema_name
    [ COMMENT schema_comment ]
    [ LOCATION schema_directory | MANAGED LOCATION location_path ]
    [ WITH DBPROPERTIES ( { property_name = property_value } [ , ... ] ) ]

Paramètres

  • schema_name

    Nom du schéma à créer.

    Les schémas créés dans le catalogue hive_metastore peuvent uniquement contenir des caractères ASCII alphanumériques et des traits de soulignement (INVALID_SCHEMA_OR_RELATION_NAME).

  • IF NOT EXISTS

    Crée un schéma du nom spécifié s’il n’en existe pas. S’il existe déjà un schéma du même nom, rien ne se produit.

  • EMPLACEMENT schema_directory

    LOCATION n’est pas pris en charge dans Unity Catalog. Utilisez MANAGED LOCATION si vous souhaitez spécifier un emplacement de stockage pour un schéma dans Unity Catalog.

    schema_directory est un littéral STRING. Le chemin du système de fichiers dans lequel le schéma spécifié doit être créé. Si le chemin spécifié n’existe pas dans le système de fichiers sous-jacent, crée un répertoire avec le chemin. Si l’emplacement n’est pas spécifié, le schéma est créé dans le répertoire par défaut de l’entrepôt, dont le chemin est défini par la configuration statique spark.sql.warehouse.dir.

    Avertissement

    Si un schéma (base de données) est inscrit dans votre metastore Hive au niveau de l’espace de travail, la suppression de ce schéma à l’aide de l’option CASCADE entraîne la suppression récursive de tous les fichiers de cet emplacement de schéma, quel que soit le type de table (managé ou externe).

    Si le schéma est inscrit dans un metastore Unity Catalog, les fichiers des tables managées Unity Catalog sont supprimés de manière récursive. Toutefois, les fichiers des tables externes ne sont pas supprimés. Vous devez gérer ces fichiers directement à l’aide du fournisseur de stockage cloud.

    Par conséquent, pour éviter toute perte accidentelle de données, vous ne devez jamais inscrire un schéma dans un metastore Hive à un emplacement contenant des données existantes. Vous ne devez pas non plus créer de tables externes dans un emplacement géré par des schémas de metastore Hive ou contenant des tables managées Unity Catalog.

  • schema_comment

    Un littéral STRING. Description du schéma.

  • EMPLACEMENT MANAGÉ location_path

    MANAGED LOCATION est facultatif et nécessite Unity Catalog. Si vous souhaitez spécifier un emplacement de stockage pour un schéma inscrit dans votre Hive au niveau de l’espace de travail ou dans un metastore tiers, utilisez plutôt LOCATION.

    location_path doit être un littéral STRING. Spécifie le chemin vers un emplacement racine de stockage pour le schéma qui est différent de l’emplacement racine de stockage du catalogue ou du metastore. Ce chemin doit être défini dans une configuration d’emplacement externe, et vous devez disposer du privilège CREATE MANAGED STORAGE sur la configuration d’emplacement externe. Vous pouvez utiliser le chemin défini dans la configuration de l’emplacement externe ou un sous-chemin (en d’autres termes, 'abfss://container@storageaccount.dfs.core.windows.net/finance' ou 'abfss://container@storageaccount.dfs.core.windows.net/finance/product'). Pris en charge dans Databricks SQL ou sur les clusters exécutant Databricks Runtime 11.3 LTS et versions ultérieures.

    Consultez aussi Tables managées et Créer un metastore de Unity Catalog.

  • WITH DBPROPERTIES ( property_name = property_value [ , … ] )

    Propriétés du schéma sous forme de paires clé-valeur.

  • OPTIONS

    Définit les paramètres spécifiques au type de connexion nécessaires à l'identification du catalogue au niveau de la connexion.

    • option

      La clé d'option. La clé peut comporter un ou plusieurs identificateurs séparés par un point, ou un littéral STRING.

      Les clés d’option doivent être uniques et respectent la casse.

    • value

      Valeur de l'option. La valeur doit être BOOLEAN, STRING, INTEGER, ou uneDECIMALexpression constante. La valeur peut également être un appel à la fonction SQL SECRET. Par exemple, le value pour password peut comprendre secret('secrets.r.us', 'postgresPassword') au lieu d’entrer le mot de passe littéral.

Exemples

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