共用方式為


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

    要建立的數據表名稱。 名稱不得包含 時態規格或選項規格。 如果名稱不合格,則會在目前的結構描述中建立資料表。 table_name不得已經存在。

  • source_table_name

    複製其定義之數據表的名稱。 source_table_nametable_name 必須同時位於Hive中繼存放區上,或兩者都位於Unity目錄上。

  • table_clauses

    選擇性地指定新數據表的數據來源格式、位置和使用者定義屬性。 每個次子句只能指定一次。

    • 位置路徑

      儲存數據表數據之目錄的路徑,這可能是分散式記憶體的路徑。 如果您指定位置,新的資料表會 變成外部資料表。 如果您未指定位置,數據表就是 受控數據表

      無法在與受控資料表位置重疊的位置中建立外部資料表。

    • TBLPROPERTIES

      選擇性地設定一個或多個使用者定義的屬性。

    • 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_formatrow_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

        數據表的檔案格式。 可用的格式包括TEXTFILESEQUENCEFILE、、ORCRCFILEPARQUETAVRO。 或者,您可以透過 INPUTFORMATOUTPUTFORMAT指定自己的輸入和輸出格式。 只有格式 TEXTFILESEQUENCEFILE、 和 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';