CREATE TABLE LIKE

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime

Definisce una tabella utilizzando la definizione e i metadati di una tabella esistente.

Delta Lake supporta CREATE TABLE LIKE Databricks SQL e Databricks Runtime 13.3 LTS e versioni successive. In Databricks Runtime 12.2 LTS e versioni precedenti, usare CREATE TABLE AS.

Sintassi

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 }

Parametri

  • SE NON ESISTE

    Se specificato, l'istruzione viene ignorata se l'oggetto table_name esiste già.

  • table_name

    Nome della tabella da creare. Il nome non deve includere una specifica temporale o una specifica delle opzioni. Se il nome non è qualificato, la tabella viene creata nello schema corrente. Un table_name non deve esistere già.

  • source_table_name

    Nome della tabella la cui definizione viene copiata. source_table_name e table_name devono essere entrambi nel metastore Hive o entrambi nel catalogo Unity.

  • table_clauses

    Facoltativamente, specificare un formato di origine dati, un percorso e le proprietà definite dall'utente per la nuova tabella. Ogni clausola secondaria può essere specificata una sola volta.

    • PERCORSO

      Percorso della directory in cui sono archiviati i dati della tabella, che potrebbe essere un percorso nello storage distribuito. Se si specifica un percorso, la nuova tabella diventa una tabella esterna . Se non si specifica una posizione, la tabella è una tabella gestita .

      Non è possibile creare tabelle esterne in posizioni che si sovrappongono alla posizione delle tabelle gestite.

    • TBLPROPERTIES

      Facoltativamente, imposta una o più proprietà definite dall'utente.

    • UTILIZZO del sorgente_dati

      Formato di file da utilizzare per la tabella. data_source deve essere uno tra:

      • TEXT
      • CSV
      • JSON
      • JDBC
      • PARQUET
      • DELTA

      I formati di file aggiuntivi da usare per la tabella sono supportati in Databricks Runtime:

      • ORC
      • HIVE
      • LIBSVM
      • Nome completo della classe di un'implementazione di org.apache.spark.sql.sources.DataSourceRegister personalizzata.

      Se non si specifica USING il formato della tabella di origine verrà ereditato.

      Il codice seguente si applica a: Databricks Runtime

      HIVE è supportato per creare una tabella SerDe Hive in Databricks Runtime. È possibile specificare file_format e row_format specifici di hive usando la clausola OPTIONS, ovvero una mappa di stringhe senza distinzione tra maiuscole e minuscole. I option_keys sono:

      • FILEFORMAT
      • INPUTFORMAT
      • OUTPUTFORMAT
      • SERDE
      • FIELDDELIM
      • ESCAPEDELIM
      • MAPKEYDELIM
      • LINEDELIM
    • ROW_FORMAT FORMATO RIGA

      Si applica a:segno di spunta sì Databricks Runtime

      Per specificare un SerDe personalizzato, impostare su SERDE e specificare il nome completo di una classe SerDe personalizzata e le proprietà SerDe facoltative. Per usare il serDe nativo, impostare su DELIMITED e specificare il delimitatore, il carattere di escape, il carattere Null e così via.

      • SERDEPROPERTIES

        Elenco di coppie chiave-valore usate per contrassegnare la definizione SerDe.

      • CAMPI TERMINATI DA

        Definire un separatore di colonna.

      • ESCAPE BY

        Definire il meccanismo di escape.

      • ELEMENTI DI RACCOLTA TERMINATI DA

        Definire un separatore di elementi della raccolta.

      • CHIAVI DI MAPPING TERMINATE DA

        Definire un separatore di chiave della mappa.

      • RIGHE TERMINATE DA

        Definire un separatore di riga.

      • NULL DEFINITO COME

        Definire il valore specifico per NULL.

      • ARCHIVIATO COME

        Formato di file per la tabella. I formati disponibili includono TEXTFILE, SEQUENCEFILE, RCFILEORC, PARQUET, e AVRO. In alternativa, è possibile specificare formati di input e output personalizzati tramite INPUTFORMAT e OUTPUTFORMAT. Solo i formati TEXTFILE, SEQUENCEFILEe RCFILE possono essere usati con ROW FORMAT SERDE e possono essere usati solo TEXTFILE con ROW FORMAT DELIMITED.

Note

A seconda dell'origine dati e della destinazione, non tutte le proprietà delle tabelle possono essere trasferite.

CREATE TABLE LIKE quando la fonte è una tabella Delta Lake:

Feature/Property Target è una tabella non delta Target è una tabella delta
COMMENT
Colonne
Colonne di partizione
Impostazione No
Vincolo di Tabella Non applicabile
Protocollo Delta Non applicabile
Filtri di riga No No
Maschere di colonna No No
Tag controllati No No

CREATE TABLE LIKE quando la fonte non è una tabella Delta Lake:

Feature/Property Target è una tabella non delta Target è una tabella delta
COMMENT
Colonne
Colonne di partizione
Impostazione
Vincolo di Tabella No
Protocollo Delta No (protocollo predefinito corrente per la sessione)
Filtri di riga No No
Maschere di colonna No No
Tag controllati No No

Importante

CREATE TABLE LIKE non esegue il trasporto dei controlli di accesso dalla tabella di origine. Crea solo una nuova tabella con gli stessi metadati dello schema e della tabella della tabella di origine.

I controlli di accesso seguenti non vengono eseguiti nella nuova tabella:

  • Filtri di riga a livello di tabella e maschere di colonna nella tabella di origine.
  • Tag regolati assegnati alla tabella di origine o alle relative colonne. Poiché i criteri di controllo degli accessi in base all'attributo corrispondono a tabelle e colonne in base ai tag regolati, i criteri ABAC che corrispondono alla tabella di origine o alle relative colonne non corrispondono automaticamente alla nuova tabella, a meno che non si aggiungono i tag regolamentati necessari alla nuova tabella.

Dopo aver creato la nuova tabella, aggiungere eventuali filtri di riga, maschere di colonna e tag regolati.

Esempi

-- 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';