Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Applies to:
Databricks SQL
Databricks Runtime
Defines a table using the definition and metadata of an existing table.
Delta Lake does support CREATE TABLE LIKE in Databricks SQL and Databricks Runtime 13.3 LTS and above.
In Databricks Runtime 12.2 LTS and below, use 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 }
Parameters
IF NOT EXISTS
If specified ignores the statement if the
table_namealready exists.-
The name of the table to create. The name must not include a temporal specification or options specification. If the name is not qualified the table is created in the current schema. A table_name must not exist already.
-
The name of the table whose definition is copied.
source_table_nameandtable_namemust both be on Hive metastore, or both be on Unity Catalog. table_clauses
Optionally specify a data source format, location, and user defined properties for the new table. Each sub clause may only be specified once.
LOCATION path
Path to the directory where table data is stored, which could be a path on distributed storage. If you specify a location, the new table becomes an external table. If you do not specify a location, the table is a managed table.
You cannot create external tables in locations that overlap with the location of managed tables.
-
Optionally sets one or more user defined properties.
USING data_source
The file format to use for the table.
data_sourcemust be one of:TEXTCSVJSONJDBCPARQUETDELTA
The following additional file formats to use for the table are supported in Databricks Runtime:
ORCHIVELIBSVM- a fully-qualified class name of a custom implementation of
org.apache.spark.sql.sources.DataSourceRegister.
If you do not specify
USINGthe format of the source table will be inherited.The following applies to: Databricks Runtime
HIVEis supported to create a Hive SerDe table in Databricks Runtime. You can specify the Hive-specificfile_formatandrow_formatusing theOPTIONSclause, which is a case-insensitive string map. Theoption_keysare:FILEFORMATINPUTFORMATOUTPUTFORMATSERDEFIELDDELIMESCAPEDELIMMAPKEYDELIMLINEDELIM
ROW FORMAT row_format
Applies to:
Databricks RuntimeTo specify a custom SerDe, set to
SERDEand specify the fully-qualified class name of a custom SerDe and optional SerDe properties. To use the native SerDe, set toDELIMITEDand specify the delimiter, escape character, null character and so on.SERDEPROPERTIES
A list of key-value pairs used to tag the SerDe definition.
FIELDS TERMINATED BY
Define a column separator.
ESCAPED BY
Define the escape mechanism.
COLLECTION ITEMS TERMINATED BY
Define a collection item separator.
MAP KEYS TERMINATED BY
Define a map key separator.
LINES TERMINATED BY
Define a row separator.
NULL DEFINED AS
Define the specific value for
NULL.STORED AS
The file format for the table. Available formats include
TEXTFILE,SEQUENCEFILE,RCFILE,ORC,PARQUET, andAVRO. Alternatively, you can specify your own input and output formats throughINPUTFORMATandOUTPUTFORMAT. Only formatsTEXTFILE,SEQUENCEFILE, andRCFILEcan be used withROW FORMAT SERDEand onlyTEXTFILEcan be used withROW FORMAT DELIMITED.
Notes
Depending on the data source and target not all properties of tables may be transferred.
CREATE TABLE LIKE when the source is a Delta Lake Table:
| Feature/Property | Target is non-Delta Table | Target is a Delta Table |
|---|---|---|
| COMMENT | Yes | Yes |
| Columns | Yes | Yes |
| Partition columns | Yes | Yes |
| Configuration | No | Yes |
| Table Constraint | Not Applicable | Yes |
| Delta Protocol | Not Applicable | Yes |
CREATE TABLE LIKE when the source is not a Delta Lake Table:
| Feature/Property | Target is non-Delta Table | Target is a Delta Table |
|---|---|---|
| COMMENT | Yes | Yes |
| Columns | Yes | Yes |
| Partition columns | Yes | Yes |
| Configuration | Yes | Yes |
| Table Constraint | No | Yes |
| Delta Protocol | No (Current Default Protocol for that session) | Yes |
Examples
-- 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';