CREATE TABLE LIKE
S’applique à : Databricks SQL Databricks Runtime
Définit une table à l’aide de la définition et des métadonnées d’une table ou d’une vue existante.
Delta Lake prend en charge CREATE TABLE LIKE
dans Databricks SQL et Databricks Runtime 13.3 LTS et versions ultérieures.
Dans Databricks Runtime 12.2 LTS et versions antérieures, utilisez CREATE TABLE AS.
Syntaxe
CREATE TABLE [ IF NOT EXISTS ] table_name LIKE source_table_name [table_clauses]
table_clauses
{ USING data_source |
LOCATION path |
TBLPROPERTIES clause |
ROW FORMAT row_format |
STORED AS file_format } [...]
row_format
{ SERDE serde_class [ WITH SERDEPROPERTIES (serde_key = serde_val [, ...] ) ] |
{ DELIMITED [ FIELDS TERMINATED BY fields_terminated_char [ ESCAPED BY escaped_char ] ]
[ COLLECTION ITEMS TERMINATED BY collection_items_terminated_char ]
[ MAP KEYS TERMINATED BY map_key_terminated_char ]
[ LINES TERMINATED BY row_terminated_char ]
[ NULL DEFINED AS null_char ] } }
property_key
{ identifier [. ...] | string_literal }
Paramètres
IF NOT EXISTS
S’il est spécifié, l’instruction est ignorée si
table_name
existe déjà.-
Nom de la table à créer. Le nom ne doit pas inclure de spécification temporelle ou de spécification d’options. Si le nom n’est pas qualifié, la table est créée dans le schéma actuel. Il ne doit pas y avoir de table_name existant.
-
Nom de la table dont la définition est copiée.
source_table_name
ettable_name
doivent se trouver sur le metastore Hive ou les deux sur Unity Catalog. table_clauses
Vous pouvez spécifier un format de source de données, un emplacement et des propriétés définies par l’utilisateur pour la nouvelle table. Chaque sous-clause ne peut être spécifiée qu’une seule fois.
LOCATION chemin d’accès
Chemin d’accès au répertoire sous lequel les données de table sont stockées, qui peut être un chemin d’accès sur le stockage distribué. Si vous spécifiez un emplacement, la nouvelle table devient une table externe. Si vous ne spécifiez aucun emplacement, la table est une table managée.
Vous ne pouvez créer aucune table externe dans des emplacements qui chevauchent l’emplacement des tables managées.
-
(Facultatif) Définit une ou plusieurs propriétés définies par l’utilisateur.
USING data_source
Format de fichier à utiliser pour la table.
data_source
doit faire partie de :TEXT
CSV
JSON
JDBC
PARQUET
DELTA
Les formats de fichiers supplémentaires suivants à utiliser pour la table sont pris en charge dans Databricks Runtime :
ORC
HIVE
LIBSVM
- un nom de classe complet d’une implémentation personnalisée de
org.apache.spark.sql.sources.DataSourceRegister
.
Si vous ne spécifiez pas
USING
, le format de la table source sera hérité.Les éléments suivants s’appliquent à : Databricks Runtime
HIVE
est pris en charge pour créer une table Hive SerDe dans Databricks Runtime. Vous pouvez spécifier la clause spécifique à Hivefile_format
etrow_format
à l'aide de la clauseOPTIONS
, qui est un mappage de chaînes indépendant de la casse. Lesoption_keys
sont les suivants :FILEFORMAT
INPUTFORMAT
OUTPUTFORMAT
SERDE
FIELDDELIM
ESCAPEDELIM
MAPKEYDELIM
LINEDELIM
ROW FORMAT row_format
S’applique à : Databricks Runtime
Pour spécifier une SerDe personnalisée, définissez la valeur
SERDE
et spécifiez le nom de classe complet d’une SerDe personnalisée et des propriétés de SerDe facultatives. Pour utiliser la SerDe native, définissez la valeurDELIMITED
et spécifiez le délimiteur, un caractère d’échappement, un caractère null, etc.SERDEPROPERTIES
Liste de paires clé-valeur utilisées pour étiqueter la définition de SerDe.
FIELDS TERMINATED BY
Définissez un séparateur de colonnes.
ESCAPED BY
Définissez le mécanisme d’échappement.
COLLECTION ITEMS TERMINATED BY
Définissez un séparateur d'éléments de collection.
MAP KEYS TERMINATED BY
Définissez un séparateur de clés de mappage.
LINES TERMINATED BY
Définissez un séparateur de lignes.
NULL DEFINED AS
Définissez la valeur spécifique pour
NULL
.STORED AS
Format de fichier pour la table. Les formats disponibles sont
TEXTFILE
,SEQUENCEFILE
,RCFILE
,ORC
,PARQUET
etAVRO
. Vous pouvez également spécifier vos propres formats d’entrée et de sortie à l’aide deINPUTFORMAT
etOUTPUTFORMAT
. Seuls les formatsTEXTFILE
,SEQUENCEFILE
etRCFILE
peuvent être utilisés avecROW FORMAT SERDE
, et seul le formatTEXTFILE
peut être utilisé avecROW FORMAT DELIMITED
.
Notes
Selon la source de données et de la cible, les propriétés des tables ne peuvent pas toutes être transférées.
CREATE TABLE LIKE
lorsque la source est une table Delta Lake :
Fonctionnalité/propriété | La cible est une table non Delta | La cible est une table Delta |
---|---|---|
COMMENTAIRE | Oui | Oui |
Colonnes | Oui | Oui |
Colonnes de partition | Oui | Oui |
Configuration | Non | Oui |
Contrainte de table | Non applicable | Oui |
Protocole Delta | Non applicable | Oui |
CREATE TABLE LIKE
lorsque la source n’est pas une table Delta Lake :
Fonctionnalité/propriété | La cible est une table non Delta | La cible est une table Delta |
---|---|---|
COMMENTAIRE | Oui | Oui |
Colonnes | Oui | Oui |
Colonnes de partition | Oui | Oui |
Configuration | Oui | Oui |
Contrainte de table | Non | Oui |
Protocole Delta | Non (protocole par défaut actuel pour cette session) | Oui |
Exemples
-- Create table using a new location
> CREATE TABLE Student_Dupli LIKE Student LOCATION '/path/to/data_files';
-- Create table like using a data source
> CREATE TABLE Student_Dupli LIKE Student USING CSV LOCATION '/path/to/csv_files';