Freigeben über


CREATE TABLE LIKE

Gilt für: durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime

Definiert eine Tabelle anhand der Definition und Metadaten einer vorhandenen Tabelle oder Sicht.

Delta Lake unterstützt CREATE TABLE LIKE in Databricks SQL und Databricks Runtime 13.3 LTS und höher. Verwenden Sie in Databricks Runtime 12.2 LTS und früher CREATE TABLE AS.

Syntax

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 }

Parameter

  • IF NOT EXISTS

    Falls angegeben, wird die Anweisung ignoriert, wenn table_name bereits vorhanden ist.

  • table_name

    Der Name der zu erstellenden Tabelle. Der Name darf keine temporale Spezifikation enthalten. Wenn der Name ohne Qualifizierung angegeben wird, wird die Tabelle im aktuellen Schema erstellt. Ein Tabellenname darf nicht bereits vorhanden sein.

  • source_table_name

    Der Name der Tabelle, deren Definition kopiert wird. source_table_name und table_name müssen sich beide im Hive-Metastore oder in Unity Catalog befinden.

  • table_clauses

    Geben Sie optional ein Datenquellenformat, einen Speicherort und benutzerdefinierte Eigenschaften für die neue Tabelle an. Jede Unterklausel kann nur einmal angegeben werden.

    • LOCATION path

      Pfad zu dem Verzeichnis, in dem Tabellendaten gespeichert werden. Dabei kann es sich um einen Pfad im verteilten Speicher handeln. Wenn Sie einen Speicherort angeben, wird die neue Tabelle eine externe Tabelle. Wenn Sie keinen Speicherort angeben, ist die Tabelle eine verwaltete Tabelle.

      Sie können keine externen Tabellen an Speicherorten erstellen, die sich mit dem Speicherort von verwalteten Tabellen überlappen.

    • TBLPROPERTIES

      Legt optional eine oder mehrere benutzerdefinierte Eigenschaften fest.

    • USING data_source

      Das Dateiformat, das für die Tabelle verwendet werden soll. data_source muss eine der folgenden Angaben sein:

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

      Die folgenden zusätzlichen Dateiformate, die für die Tabelle verwendet werden sollen, werden in Databricks Runtime unterstützt:

      • ORC
      • HIVE
      • LIBSVM
      • ein vollqualifizierter Klassenname einer benutzerdefinierten Implementierung von org.apache.spark.sql.sources.DataSourceRegister.

      Wenn Sie USING nicht angeben, wird das Format der Quelltabelle übernommen.

      Folgendes gilt für: Databricks Runtime

      HIVE wird unterstützt, um eine Hive SerDe-Tabelle in Databricks Runtime zu erstellen. Sie können das Hive-spezifische file_format und row_format mithilfe der OPTIONS-Klausel angeben, einer Zeichenfolgenzuordnung, bei der die Groß-/Kleinschreibung nicht beachtet wird. Die option_keys sind:

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

      Gilt für: Häkchen gesetzt ja Databricks Runtime

      Um eine benutzerdefinierte SerDe-Tabelle anzugeben, geben Sie SERDE sowie den vollqualifizierten Klassennamen einer benutzerdefinierten SerDe-Tabelle und optionale SerDe-Eigenschaften an. Geben Sie andernfalls DELIMITED sowie das Trenn-, Escape- und NULL-Zeichen usw. an, um die native SerDe-Tabelle zu verwenden.

      • SERDEPROPERTIES

        Eine Liste von Schlüssel-Wert-Paaren, die zum Markieren der SerDe-Definition verwendet werden.

      • FIELDS TERMINATED BY

        Definiert ein Spaltentrennzeichen.

      • ESCAPED BY

        Definiert den Escapemechanismus.

      • COLLECTION ITEMS TERMINATED BY

        Definiert das Trennzeichen für Sammlungselemente.

      • MAP KEYS TERMINATED BY

        Definiert das Trennzeichen für Zuordnungsschlüssel.

      • LINES TERMINATED BY

        Definiert das Zeilentrennzeichen.

      • NULL DEFINED AS

        Definiert den spezifischen Wert für NULL.

      • STORED AS

        Das Dateiformat für die Tabelle. Zu den verfügbaren Formaten gehören TEXTFILE, SEQUENCEFILE, RCFILE, ORC, PARQUET und AVRO. Alternativ können Sie auch über INPUTFORMAT und OUTPUTFORMAT ein eigenes Ein- und Ausgabeformat angeben. Für ROW FORMAT SERDE können nur TEXTFILE, SEQUENCEFILE und RCFILE, für ROW FORMAT DELIMITED nur TEXTFILE verwendet werden.

Notizen

Je nach Datenquelle und Datenziel können möglicherweise nicht alle Eigenschaften von Tabellen übertragen werden.

CREATE TABLE LIKE, wenn die Quelle eine Delta Lake-Tabelle ist:

Feature/Eigenschaft Ziel ist eine Nicht-Delta-Tabelle Ziel ist eine Delta-Tabelle
KOMMENTAR Ja Ja
Spalten Ja Ja
Partitionsspalten Ja Ja
Konfiguration Nein Ja
Tabellenconstraint Nicht zutreffend Ja
Delta-Protokoll Nicht zutreffend Ja

CREATE TABLE LIKE, wenn die Quelle keine Delta Lake-Tabelle ist:

Feature/Eigenschaft Ziel ist eine Nicht-Delta-Tabelle Ziel ist eine Delta-Tabelle
KOMMENTAR Ja Ja
Spalten Ja Ja
Partitionsspalten Ja Ja
Konfiguration Ja Ja
Tabellenconstraint Nein Ja
Delta-Protokoll Nein (Aktuelles Standardprotokoll für diese Sitzung) Ja

Beispiele

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