次の方法で共有


CREATE TABLE LIKE

適用対象: 「はい」のチェック マーク Databricks SQL 「はい」のチェック マーク Databricks Runtime

既存のテーブルまたはビューの定義とメタデータを使用してテーブルを定義します。

Delta Lake は、Databricks SQL および Databricks Runtime 13.3 LTS 以降で CREATE TABLE LIKE をサポートしています。 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 Catalog 上にある必要があります。

  • table_clauses

    必要に応じて、新しいテーブルのデータ ソースの形式、場所、およびユーザー定義プロパティを指定します。 各サブ句は、1 回だけ指定できます。

    • LOCATION パス

      テーブル データが格納されているディレクトリへのパス。これは、分散ストレージ上のパスである場合があります。 場所を指定すると、新しいテーブルが外部テーブルになります。 場所を指定しないと、テーブルはマネージド テーブルです。

      マネージド テーブルの場所と重複する場所に外部テーブルを作成することはできません。

    • TBLPROPERTIES

      必要に応じて、1 つ以上のユーザー定義プロパティを設定します。

    • 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 テーブルを作成するためにサポートされています。 Hive 固有の file_formatrow_format を、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

        テーブルのファイル形式。 使用できる形式には、TEXTFILESEQUENCEFILERCFILEORCPARQUETAVRO があります。 または、INPUTFORMATOUTPUTFORMAT を使用して、独自の入力形式と出力形式を指定することもできます。 ROW FORMAT SERDE で使用できるのは TEXTFILESEQUENCEFILERCFILE の形式のみです。また、ROW FORMAT DELIMITED で使用できるのは TEXTFILE のみです。

メモ

データ ソースとターゲットによっては、テーブルのプロパティのすべては転送されない場合があります。

CREATE TABLE LIKEソースが Delta Lake テーブルの場合:

機能/プロパティ ターゲットが非 Delta テーブル ターゲットが Delta テーブル
コメント はい はい
[列] はい はい
パーティション列 はい はい
構成 いいえ はい
テーブル制約 適用外 はい
デルタ プロトコル 適用外 はい

ソースが Delta Lake Table ではないときに CREATE TABLE LIKE:

機能/プロパティ ターゲットが非 Delta テーブル ターゲットが Delta テーブル
コメント はい はい
[列] はい はい
パーティション列 はい はい
構成 はい はい
テーブル制約 いいえ はい
デルタ プロトコル いいえ (そのセッションの現在の既定のプロトコル) はい

-- Create table using a new location
> CREATE TABLE Student_Dupli LIKE Student LOCATION '/mnt/data_files';

-- Create table like using a data source
> CREATE TABLE Student_Dupli LIKE Student USING CSV LOCATION '/mnt/csv_files';