CREATE TABLE LIKE
Область применения: Databricks SQL Databricks Runtime
Определяет таблицу с помощью определения и метаданных существующей таблицы или представления.
Delta Lake поддерживает CREATE TABLE LIKE
в Databricks SQL и Databricks Runtime 13.3 LTS и более поздних версиях.
В Databricks Runtime 12.2 LTS и ниже используйте CREATE TABLE AS.
Синтаксис
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 }
Параметры
IF NOT EXISTS
Если параметр задан и
table_name
уже существует, инструкция игнорируется.-
Имя создаваемой таблицы. Имя не должно включать темпоральную спецификацию или спецификацию параметров. Если имя не задано, таблица создается в текущей схеме. Значение table_name должно быть уникальным.
-
Имя таблицы, определение которой копируется.
source_table_name
иtable_name
должны находиться в хранилище метаданных Hive или в каталоге Unity. table_clauses
При необходимости укажите формат источника данных, расположение и пользовательские свойства новой таблицы. Каждое вложенное предложение может быть указано только один раз.
LOCATION path
Путь к каталогу, в котором хранятся данные таблицы, который может быть путем в распределённом хранилище. Если указать расположение, новая таблица становится внешней таблицей. Если вы не укажете расположение, таблица будет являться управляемой таблицей .
Нельзя создавать внешние таблицы в расположениях, перекрывающихся расположением управляемых таблиц.
-
При необходимости задает одно или несколько свойств, определяемых пользователем.
USING data_source
Формат файла, используемый для таблицы.
data_source
должно иметь одно из следующих значений:TEXT
CSV
JSON
JDBC
PARQUET
DELTA
В Databricks Runtime поддерживаются следующие дополнительные форматы файлов для таблицы:
ORC
HIVE
LIBSVM
- Полное имя класса пользовательской реализации
org.apache.spark.sql.sources.DataSourceRegister
.
Если не указать
USING
формат исходной таблицы наследуется.Ниже приведено следующее: Databricks Runtime
HIVE
поддерживается для создания таблицы Hive SerDe в Databricks Runtime. Можно указать параметрыfile_format
иrow_format
для Hive, используя для этого предложениеOPTIONS
. Оно представляет собой сопоставление в виде строки без учета регистра.option_keys
являются:FILEFORMAT
INPUTFORMAT
OUTPUTFORMAT
SERDE
FIELDDELIM
ESCAPEDELIM
MAPKEYDELIM
LINEDELIM
ROW FORMAT row_format
Область применения: Databricks Runtime
Чтобы указать пользовательский SerDe, задайте значение
SERDE
и укажите полное имя класса пользовательского SerDe, а также необязательные свойства SerDe. Чтобы использовать собственный SerDe, установите значениеDELIMITED
и укажите разделитель, символ экранирования, символ null, и так далее.SERDEPROPERTIES
Список пар "ключ-значение", используемых для маркировки определения SerDe.
FIELDS TERMINATED BY
Определите разделитель столбцов.
ESCAPED BY
Определяет механизм экранирования.
COLLECTION ITEMS TERMINATED BY
Определяет разделитель элементов сбора.
MAP KEYS TERMINATED BY
Определяет разделитель ключей сопоставления.
LINES TERMINATED BY
Определяет разделитель строк.
NULL DEFINED AS
Определяет конкретное значение для
NULL
.STORED AS
Формат файла для таблицы. Доступные форматы:
TEXTFILE
,SEQUENCEFILE
,RCFILE
,ORC
,PARQUET
иAVRO
. Кроме того, можно указать собственные форматы входных и выходных данных с помощьюINPUTFORMAT
иOUTPUTFORMAT
. СTEXTFILE
можно использовать только форматыSEQUENCEFILE
,RCFILE
иROW FORMAT SERDE
, а сTEXTFILE
— только форматROW FORMAT DELIMITED
.
Примечания.
В зависимости от источника и целевых данных не все свойства таблиц могут быть переданы.
Функция или свойство | Целевой объект — не таблица Delta | Назначение — таблица Delta |
---|---|---|
КОММЕНТАРИЙ | Да | Да |
Столбцы | Да | Да |
Столбцы секционирования | Да | Да |
Настройка | No | Да |
Ограничение таблицы | Н/Д | Да |
Разностный протокол | Н/Д | Да |
CREATE TABLE LIKE
, если источник не является таблицей Delta Lake:
Функция или свойство | Целевой объект — не таблица Delta | Назначение — таблица Delta |
---|---|---|
КОММЕНТАРИЙ | Да | Да |
Столбцы | Да | Да |
Столбцы секционирования | Да | Да |
Настройка | Да | Да |
Ограничение таблицы | No | Да |
Разностный протокол | Нет (текущий протокол по умолчанию для этого сеанса) | Да |
Примеры
-- 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';