適用於:
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 }
參數
若不存在
如果已指定 ,則忽略 語句
table_name。-
要建立的數據表名稱。 名稱不得包含 時態規格或選項規格。 如果名稱不合格,則會在目前的結構描述中建立資料表。 table_name不得已經存在。
-
複製其定義之數據表的名稱。
source_table_name和table_name必須同時位於Hive中繼存放區上,或兩者都位於Unity目錄上。 table_clauses
選擇性地指定新數據表的數據來源格式、位置和使用者定義屬性。 每個次子句只能指定一次。
位置路徑
儲存數據表數據之目錄的路徑,這可能是分散式記憶體的路徑。 如果您指定位置,新的資料表會 變成外部資料表。 如果您未指定位置,數據表就是 受控數據表。
無法在與受控資料表位置重疊的位置中建立外部資料表。
-
選擇性地設定一個或多個使用者定義的屬性。
使用「data_source」
要用於資料表的檔案格式。
data_source必須是其中之一:TEXTCSVJSONJDBCPARQUETDELTA
Databricks Runtime 支援下列用於資料表的其他檔案格式:
ORCHIVELIBSVM-
org.apache.spark.sql.sources.DataSourceRegister的自訂實作的完整類別名稱。
如果您未指定
USING源數據表的格式將會繼承。下列適用於:Databricks Runtime
支援
HIVE以在 Databricks Runtime 中建立 Hive SerDe 資料表。 您可以使用file_format子句來指定特定於 Hive 的row_format和OPTIONS,它是不區分大小寫的字串對應。option_keys為:FILEFORMATINPUTFORMATOUTPUTFORMATSERDEFIELDDELIMESCAPEDELIMMAPKEYDELIMLINEDELIM
數據列格式row_format
適用於:
Databricks Runtime若要指定自定義 SerDe,請將 設定為
SERDE,並指定自定義 SerDe 和選擇性 SerDe 屬性的完整類別名稱。 若要使用原生 SerDe,請將 設定為DELIMITED並指定分隔符、逸出字元、Null 字元等等。SERDEPROPERTIES
用來標記 SerDe 定義的索引鍵/值組清單。
欄位終止者
定義數據列分隔符。
逸出者
定義逸出機制。
結束的集合專案
定義收集項分隔符。
對應索引鍵終止者
定義對應索引鍵分隔符。
結束的行
定義數據列分隔符。
定義為 NULL
定義的特定值
NULL。儲存為
數據表的檔案格式。 可用的格式包括
TEXTFILE、SEQUENCEFILE、、RCFILEORC、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';