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 が既に存在していてはいけません。
-
定義がコピーされるテーブルの名前。
source_table_name
とtable_name
の両方が Hive メタストア上にあるか、両方が Unity Catalog 上にある必要があります。 table_clauses
必要に応じて、新しいテーブルのデータ ソースの形式、場所、およびユーザー定義プロパティを指定します。 各サブ句は、1 回だけ指定できます。
LOCATION パス
テーブル データが格納されているディレクトリへのパス。これは、分散ストレージ上のパスである場合があります。 場所を指定すると、新しいテーブルが外部テーブルになります。 場所を指定しないと、テーブルはマネージド テーブルです。
マネージド テーブルの場所と重複する場所に外部テーブルを作成することはできません。
-
必要に応じて、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_format
やrow_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
テーブルのファイル形式。 使用できる形式には、
TEXTFILE
、SEQUENCEFILE
、RCFILE
、ORC
、PARQUET
、AVRO
があります。 または、INPUTFORMAT
とOUTPUTFORMAT
を使用して、独自の入力形式と出力形式を指定することもできます。ROW FORMAT SERDE
で使用できるのはTEXTFILE
、SEQUENCEFILE
、RCFILE
の形式のみです。また、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 '/path/to/data_files';
-- Create table like using a data source
> CREATE TABLE Student_Dupli LIKE Student USING CSV LOCATION '/path/to/csv_files';