創建數據庫表
定義托管或外部表,可選地使用數據源。
語法
{{[創建或]取代表格|創建表格[如果不存在]}table_name[table_specification][使用data_source][table_clauses][作為查詢]}table_specification({column_identifiercolumn_type[不零][生成的總是作為(expr)|生成的{總是|通過默認的}作為身份[([開始與開始][增量通過一步])]|默認的default_expression][評論column_comment][column_constraint]}(,...][,table_constraint][...])table_clauses{選項條款|分區通過條款|clustered_by_clause|位置路徑[與(憑證credential_name)]|評論table_comment|TBLPROPERTIES條款}[...]clustered_by_clause{集群通過(cluster_column(,...])[排序通過({sort_column[ASC|DESC]}(,...])]成num_buckets桶}
參數
取代
如果表已經存在,則替換表及其內容。此子句僅支持Delta Lake表。
請注意
Databricks強烈推薦使用
取代
而不是丟棄和重建三角洲湖的桌子。如果不存在
如果已指定且已存在同名表,則忽略該語句。
如果不存在
不能共存取代
,這意味著創建或取代表格如果不存在
是不允許的。要創建的表的名稱。名稱中不能包含時間規範.如果名稱不限定,則在當前模式中創建表。
table_specification
這個可選子句定義列的列表、列的類型、屬性、描述和列約束。
如果不定義表模式的列,則必須指定它們
作為查詢
或位置
.列的唯一名稱。
指定列的數據類型。並不是所有的數據類型所有數據源都支持Databricks。
非空
如果指定了該列,則不接受
零
值。此子句僅支持Delta Lake表。總是生成為(expr)
指定此子句時,此列的值由指定的
expr
.expr
可以由字麵量、表中的列標識符和確定性的內置SQL函數或操作符組成,但以下情況除外:也
expr
不能包含任何子查詢.生成{ALWAYS |默認}作為標識[([開始與開始][步數遞增])]
定義標識列。當您寫入表,並且不為標識列提供值時,它將自動分配一個惟一的、統計上增加的(或減少的)
一步
是負的)價值。此子句僅支持Delta Lake表。此子句隻能用於BIGINT數據類型的列。自動分配的值從
開始
和增量一步
.指定的值是唯一的,但不保證是連續的。兩個參數均為可選參數,默認值為1。一步
不能0
.如果自動分配的值超出標識列類型的範圍,查詢將失敗。
當
總是
,則不能為標識列提供自己的值。不支持以下操作:
由標識列分區
更新標識列
默認default_expression
要求:SQL倉庫版本2022.35或更高版本。此版本可在預覽頻道中獲得。
定義了一個
默認的
值的值插入
,更新
,合並...插入
當未指定列時。如果沒有指定默認值
默認的零
應用於可為空的列。default_expression
可由字麵量、內置SQL函數或操作符組成,但以下情況除外:也
default_expression
不能包含任何子查詢.默認的
支持CSV
,JSON
,拚花
,獸人
來源。評論column_comment
用於描述列的字符串字麵值。
-
預覽
此功能已在公共預覽.
向Delta Lake表中的列添加主鍵或外鍵約束。
控件中的表不支持約束
hive_metastore
目錄。向Delta Lake表使用添加檢查約束ALTER TABLE.
向Delta Lake表添加主鍵或外鍵約束。
控件中的表不支持約束
hive_metastore
目錄。向Delta Lake表使用添加檢查約束ALTER TABLE.
使用data_source
用於表的文件格式。
data_source
必須是:文本
AVRO
CSV
JSON
拚花
獸人
δ
如果
使用
省略,默認為δ
.對於任何
data_source
除了δ
您還必須指定一個位置
除非表編目是hive_metastore
.table_clauses
可選地為新表指定位置、分區、集群、選項、注釋和用戶定義的屬性。每個子句隻能指定一次。
一個可選子句,用於按列的子集對表進行分區。
請注意
除非定義Delta Lake表,否則引用列規範中的列的分區列總是移動到表的末尾。
clustered_by_clause
可以選擇使用列的子集將表或每個分區聚集到固定數量的哈希桶中。
Delta Lake表不支持聚類。
集群的
指定用於群集每個分區的列集,如果沒有指定分區,則指定表。
一個引用
column_identifier
在表中。如果指定多個列,則不能有重複項。由於群集操作在分區級別上,您不能將分區列也命名為群集列。
按
可選地維護桶中行的排序順序。
sort_column
用於對桶進行排序的列。列不能是分區列。排序列必須唯一。
ASC或DESC
(可選)指定是否
sort_column
按升序排序(ASC
)或降序(DESC
)秩序。默認值為ASC
.
到num_buckets桶
一個INTEGER字麵量,指定每個分區(如果沒有指定分區,則為表)劃分的桶數。
位置路徑[與(憑據。credential_name)]
存儲表數據的目錄的可選路徑,可以是分布式存儲上的路徑。
路徑
必須是STRING字麵值。如果沒有指定位置,則該表被認為是管理表格
Databricks創建一個默認的表位置。指定位置使表成為
外部表格
.中不駐留的表
hive_metastore
目錄表路徑
必須由外部位置除非一個有效存儲憑證都是確定的。對於Delta Lake表,表配置繼承自
位置
如果有數據存在。因此,如果任何TBLPROPERTIES
,column_specification
,或分區通過
子句是為Delta Lake表指定的,它們必須完全匹配Delta Lake位置數據。設置或重置一個或多個用戶定義的表選項。
評論table_comment
描述表的字符串字麵量。
可選地設置一個或多個用戶定義的屬性。
作為查詢
的數據填充表
查詢
.當您指定查詢
您不能同時指定column_specification
.表模式將從查詢中派生出來。注意,Databricks用輸入查詢的數據覆蓋底層數據源,以確保創建的表包含與輸入查詢完全相同的數據。
例子
——創建一個Delta表>創建表格學生(idINT,的名字字符串,年齡INT);——使用另一個表的數據>創建表格student_copy作為選擇*從學生;——從外部目錄創建CSV表>創建表格學生使用CSV位置“/ mnt / csv_files”;——指定表注釋和屬性>創建表格學生(idINT,的名字字符串,年齡INT)評論“這是評論”TBLPROPERTIES(“foo”=“酒吧”);——用不同的子句順序指定表注釋和屬性>創建表格學生(idINT,的名字字符串,年齡INT)TBLPROPERTIES(“foo”=“酒吧”)評論“這是評論”;——創建分區表>創建表格學生(idINT,的名字字符串,年齡INT)分區通過(年齡);用生成的列創建一個表>創建表格矩形(一個INT,bINT,區域INT生成的總是作為(一個*b));