CREATE TABLE LIKE
Gilt für: Databricks SQL 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.-
Der Name der zu erstellenden Tabelle. Der Name darf keine zeitliche Spezifikation oder Optionsspezifikation enthalten. Wenn der Name ohne Qualifizierung angegeben wird, wird die Tabelle im aktuellen Schema erstellt. Ein Tabellenname darf nicht bereits vorhanden sein.
-
Der Name der Tabelle, deren Definition kopiert wird.
source_table_name
undtable_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.
-
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-spezifischefile_format
undrow_format
mithilfe derOPTIONS
-Klausel angeben, einer Zeichenfolgenzuordnung, bei der die Groß-/Kleinschreibung nicht beachtet wird. Dieoption_keys
sind:FILEFORMAT
INPUTFORMAT
OUTPUTFORMAT
SERDE
FIELDDELIM
ESCAPEDELIM
MAPKEYDELIM
LINEDELIM
ROW FORMAT row_format
Gilt für: 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 andernfallsDELIMITED
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
undAVRO
. Alternativ können Sie auch überINPUTFORMAT
undOUTPUTFORMAT
ein eigenes Ein- und Ausgabeformat angeben. FürROW FORMAT SERDE
können nurTEXTFILE
,SEQUENCEFILE
undRCFILE
, fürROW FORMAT DELIMITED
nurTEXTFILE
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';