CREATE SCHEMA
S’applique à : Databricks SQL 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
-
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. UtilisezMANAGED LOCATION
si vous souhaitez spécifier un emplacement de stockage pour un schéma dans Unity Catalog.schema_directory
est un littéralSTRING
. 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 statiquespark.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.
COMMENTAIRE
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ôtLOCATION
.location_path
doit être un littéralSTRING
. 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ègeCREATE 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 Utilisation de tables managées et Créer un metastore 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 uneDECIMAL
expression constante. La valeur peut également être un appel à la fonction SQLSECRET
. Par exemple, levalue
pourpassword
peut comprendresecret('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))