Partager via


CREATE TABLE LIKE

S’applique à : case marquée oui Databricks SQL case marquée oui 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à.

  • table_name

    Nom de la table à créer. Le nom ne doit pas inclure une spécification temporelle. 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.

  • source_table_name

    Nom de la table dont la définition est copiée. source_table_name et table_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.

    • TBLPROPERTIES

      (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 à Hive file_format et row_format à l'aide de la clause OPTIONS, qui est un mappage de chaînes indépendant de la casse. Les option_keys sont les suivants :

      • FILEFORMAT
      • INPUTFORMAT
      • OUTPUTFORMAT
      • SERDE
      • FIELDDELIM
      • ESCAPEDELIM
      • MAPKEYDELIM
      • LINEDELIM
    • ROW FORMAT row_format

      S’applique à : oui coché 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 valeur DELIMITED 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 et AVRO. Vous pouvez également spécifier vos propres formats d’entrée et de sortie à l’aide de INPUTFORMAT et OUTPUTFORMAT. Seuls les formats TEXTFILE, SEQUENCEFILE et RCFILE peuvent être utilisés avec ROW FORMAT SERDE, et seul le format TEXTFILE peut être utilisé avec ROW 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 '/mnt/data_files';

-- Create table like using a data source
> CREATE TABLE Student_Dupli LIKE Student USING CSV LOCATION '/mnt/csv_files';