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
選擇性地指定新數據表的數據來源格式、位置和使用者定義屬性。 每個次子句只能指定一次。
位置路徑
儲存數據表數據之目錄的路徑,這可能是分散式記憶體的路徑。 如果您指定位置,新的資料表會 變成外部資料表。 如果您未指定位置,數據表就是 受控數據表。
無法在與受控資料表位置重疊的位置中建立外部資料表。
-
選擇性地設定一個或多個使用者定義的屬性。
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
以在 Databricks Runtime 中建立 Hive SerDe 資料表。 您可以使用OPTIONS
子句來指定特定於 Hive 的file_format
和row_format
,它是不區分大小寫的字串對應。option_keys
為:FILEFORMAT
INPUTFORMAT
OUTPUTFORMAT
SERDE
FIELDDELIM
ESCAPEDELIM
MAPKEYDELIM
LINEDELIM
數據列格式row_format
適用於: Databricks Runtime
若要指定自定義 SerDe,請將 設定為
SERDE
,並指定自定義 SerDe 和選擇性 SerDe 屬性的完整類別名稱。 若要使用原生 SerDe,請將 設定為DELIMITED
並指定分隔符、逸出字元、Null 字元等等。SERDEPROPERTIES
用來標記 SerDe 定義的索引鍵/值組清單。
欄位終止者
定義數據列分隔符。
逸出者
定義逸出機制。
結束的集合專案
定義收集項分隔符。
對應索引鍵終止者
定義對應索引鍵分隔符。
結束的行
定義數據列分隔符。
定義為 NULL
定義的特定值
NULL
。STORED AS
數據表的檔案格式。 可用的格式包括
TEXTFILE
、SEQUENCEFILE
、、ORC
RCFILE
、PARQUET
與AVRO
。 或者,您可以透過INPUTFORMAT
和OUTPUTFORMAT
指定自己的輸入和輸出格式。 只有格式TEXTFILE
、SEQUENCEFILE
、 和RCFILE
可以搭配ROW FORMAT SERDE
使用,而且只能TEXTFILE
搭配 使用ROW FORMAT DELIMITED
。
備註
視數據源和目標而定,並非所有數據表的屬性都可以傳輸。
CREATE TABLE LIKE
當來源是 Delta Lake Table 時:
Feature/Property | 目標為非差異數據表 | 目標為差異數據表 |
---|---|---|
COMMENT | Yes | Yes |
資料行 | Yes | Yes |
分割資料行 | Yes | Yes |
組態 | No | Yes |
數據表條件約束 | 不適用 | Yes |
差異通訊協定 | 不適用 | Yes |
CREATE TABLE LIKE
當來源不是 Delta Lake Table 時:
Feature/Property | 目標為非差異數據表 | 目標為差異數據表 |
---|---|---|
COMMENT | Yes | Yes |
資料行 | Yes | Yes |
分割資料行 | Yes | Yes |
組態 | Yes | Yes |
數據表條件約束 | No | Yes |
差異通訊協定 | 否(該工作階段的目前預設通訊協定) | Yes |
範例
-- 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';