創建表[使用]
適用於:磚的SQL磚運行時
定義托管或外部表,可選地使用數據源。
語法
{{[創建或]取代表格|創建[外部]表格[如果不存在]}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 |默認}作為標識[([以START開始][按步遞增])]
適用於:磚的SQLDatabricks Runtime 10.3及以上版本
定義一個標識列。當您寫入表,並且不為標識列提供值時,它將被自動分配一個惟一的、統計上遞增的值(如果是遞增則遞減)
一步
是負的)值。此子句僅支持Delta Lake表。此子句隻能用於BIGINT數據類型的列。自動分配的值以
開始
然後增加一步
.賦值是唯一的,但不保證是連續的。兩個參數均可選,默認值為1。一步
不能0
.如果自動分配的值超出標識列類型的範圍,則查詢將失敗。
當
總是
使用時,您不能為標識列提供自己的值。不支持以下操作:
按標識列劃分
更新標識列
默認default_expression
適用於:磚的SQLSQL倉庫版本2022.35或更高版本Databricks運行時11.2及以上
定義了一個
默認的
上使用的列的值插入
,更新
,合並...插入
當未指定列時。如果沒有指定默認值
默認的零
應用於可空列。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
BINARYFILE
CSV
JSON
拚花
獸人
δ
在Databricks運行時中支持以下用於表的附加文件格式:
JDBC
LIBSVM
的自定義實現的完全限定類名
org.apache.spark.sql.sources.DataSourceRegister
.
如果
使用
為省略,默認為δ
.對於任何
data_source
除了δ
還必須指定位置
除非表目錄是hive_metastore
.下列情況適用於:磚運行時
蜂巢
支持在Databricks Runtime中創建Hive SerDe表。您可以指定特定於hive的file_format
而且row_format
使用選項
子句,它是一個不區分大小寫的字符串映射。的option_keys
是:FILEFORMAT
INPUTFORMAT
OUTPUTFORMAT
SERDE
FIELDDELIM
ESCAPEDELIM
MAPKEYDELIM
LINEDELIM
table_clauses
可選地為新表指定位置、分區、集群、選項、注釋和用戶定義的屬性。每個子條款隻能指定一次。
可選子句,用於按列的子集對表進行分區。
請注意
除非定義了Delta Lake表,否則在列規範中引用列的分區列總是被移動到表的末尾。
clustered_by_clause
可以選擇使用列的子集將表或每個分區集群到固定數量的哈希桶中。
Delta Lake表不支持集群。
集群的
指定用於集群每個分區的列集,如果未指定分區則指定表。
引用
column_identifier
在表格中。如果指定多個列,則必須沒有重複項。由於集群操作在分區級別上,所以不能將分區列也命名為集群列。
按
可選地維護桶中的行排序順序。
sort_column
用於對桶進行排序的列。列不能是分區列。排序列必須唯一。
ASC或DESC
可選指定是否
sort_column
按升序排序(ASC
)或降序(DESC
)秩序。默認值為ASC
.
INTO 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));