適用対象:
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 }
パラメーター
存在しない場合
指定した場合、
table_nameが既に存在すると、ステートメントは無視されます。-
作成するテーブルの名前です。 名前には、 時仕様またはオプション指定を含めてはなりません。 名前が修飾されていない場合、テーブルは現在のスキーマに作成されます。 table_name が既に存在していてはいけません。
-
定義がコピーされるテーブルの名前。
source_table_nameとtable_nameの両方が Hive メタストア上にあるか、両方が Unity Catalog 上にある必要があります。 table_clauses
必要に応じて、新しいテーブルのデータ ソースの形式、場所、およびユーザー定義プロパティを指定します。 各サブ句は、1 回だけ指定できます。
LOCATION パス
テーブル データが格納されているディレクトリへのパス。これは、分散ストレージ上のパスである場合があります。 場所を指定すると、新しいテーブルが外部テーブルになります。 場所を指定しないと、テーブルはマネージド テーブルです。
マネージド テーブルの場所と重複する場所に外部テーブルを作成することはできません。
-
必要に応じて、1 つ以上のユーザー定義プロパティを設定します。
data_sourceの使用
テーブルに使用するファイル形式。
data_sourceは次のいずれかにする必要があります。TEXTCSVJSONJDBCPARQUETDELTA
テーブルに使用する次の追加のファイル形式が Databricks Runtime でサポートされています。
ORCHIVELIBSVM-
org.apache.spark.sql.sources.DataSourceRegisterのカスタム実装の完全修飾クラス名。
USINGを指定しない場合、ソース テーブルの形式は継承されます。次の説明は Databricks Runtime に関係します。
HIVEは Databricks Runtime で Hive SerDe テーブルを作成するためにサポートされています。 Hive 固有のfile_formatやrow_formatを、OPTIONS句を使用して指定できます。これは、大文字と小文字を区別しない文字列マップです。option_keysは次のとおりです。FILEFORMATINPUTFORMATOUTPUTFORMATSERDEFIELDDELIMESCAPEDELIMMAPKEYDELIMLINEDELIM
ROWFORMAT row_format
適用対象:
Databricks Runtimeカスタム SerDe を指定するには、
SERDEに設定し、カスタム SerDe プロパティと省略可能な SerDe プロパティの完全修飾クラス名を指定します。 ネイティブの SerDe を使用するには、DELIMITEDに設定し、区切り記号、エスケープ文字、null 文字を指定します。SERDEPROPERTIES
SerDe 定義のタグ付けに使用されるキーと値のペアの一覧。
フィールドの区切り文字
列区切りを定義します。
エスケープされた担当者
エスケープ メカニズムを定義します。
で終了するコレクション項目
コレクション項目の区切りを定義します。
終了するキーをマップする
マップ キーの区切りを定義します。
行の終了を
行の区切りを定義します。
NULL が定義されている
NULLを表す特定の値を定義します。として保存
テーブルのファイル形式。 使用できる形式には、
TEXTFILE、SEQUENCEFILE、RCFILE、ORC、PARQUET、AVROがあります。 または、INPUTFORMATとOUTPUTFORMATを使用して、独自の入力形式と出力形式を指定することもできます。TEXTFILEで使用できるのはSEQUENCEFILE、RCFILE、ROW FORMAT SERDEの形式のみです。また、TEXTFILEで使用できるのはROW FORMAT DELIMITEDのみです。
メモ
データ ソースとターゲットによっては、テーブルのプロパティのすべては転送されない場合があります。
CREATE TABLE LIKE
ソースが Delta Lake テーブルの場合:
| 機能/プロパティ | ターゲットが非 Delta テーブル | ターゲットが Delta テーブル |
|---|---|---|
| コメント | はい | はい |
| [列] | はい | はい |
| パーティション列 | はい | はい |
| 構成 | いいえ | はい |
| テーブル制約 | 適用外 | はい |
| デルタ プロトコル | 適用外 | はい |
CREATE TABLE LIKEが Delta Lake Table ではないときに :
| 機能/プロパティ | ターゲットが非 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';