創建數據庫表

定義托管或外部表,可選地使用數據源。

語法

創建取代表格|創建表格如果存在table_nametable_specification使用data_sourcetable_clauses作為查詢table_specificationcolumn_identifiercolumn_type生成的總是作為expr|生成的總是|通過默認的作為身份開始開始增量通過一步|默認的default_expression評論column_commentcolumn_constraint(,...table_constraint...table_clauses選項條款|分區通過條款|clustered_by_clause|位置路徑憑證credential_name|評論table_comment|TBLPROPERTIES條款...clustered_by_clause集群通過cluster_column(,...排序通過sort_columnASC|DESC(,...num_buckets

參數

  • 取代

    如果表已經存在,則替換表及其內容。此子句僅支持Delta Lake表。

    請注意

    Databricks強烈推薦使用取代而不是丟棄和重建三角洲湖的桌子。

  • 如果不存在

    如果已指定且已存在同名表,則忽略該語句。

    如果存在不能共存取代,這意味著創建取代表格如果存在是不允許的。

  • table_name

    要創建的表的名稱。名稱中不能包含時間規範.如果名稱不限定,則在當前模式中創建表。

  • table_specification

    這個可選子句定義列的列表、列的類型、屬性、描述和列約束。

    如果不定義表模式的列,則必須指定它們作為查詢位置

    • column_identifier

      列的唯一名稱。

    • column_type

      指定列的數據類型。並不是所有的數據類型所有數據源都支持Databricks。

    • 非空

      如果指定了該列,則不接受值。此子句僅支持Delta Lake表。

    • 總是生成為(expr

      指定此子句時,此列的值由指定的expr

      expr可以由字麵量、表中的列標識符和確定性的內置SQL函數或操作符組成,但以下情況除外:

      expr不能包含任何子查詢

    • 生成{ALWAYS |默認}作為標識[([開始與開始][步數遞增])]

      定義標識列。當您寫入表,並且不為標識列提供值時,它將自動分配一個惟一的、統計上增加的(或減少的)一步是負的)價值。此子句僅支持Delta Lake表。此子句隻能用於BIGINT數據類型的列。

      自動分配的值從開始和增量一步.指定的值是唯一的,但不保證是連續的。兩個參數均為可選參數,默認值為1。一步不能0

      如果自動分配的值超出標識列類型的範圍,查詢將失敗。

      總是,則不能為標識列提供自己的值。

      不支持以下操作:

      • 由標識列分區

      • 更新標識列

    • 默認default_expression

      要求:SQL倉庫版本2022.35或更高版本。此版本可在預覽頻道中獲得。

      定義了一個默認的值的值插入更新,合並...插入當未指定列時。

      如果沒有指定默認值默認的應用於可為空的列。

      default_expression可由字麵量、內置SQL函數或操作符組成,但以下情況除外:

      default_expression不能包含任何子查詢

      默認的支持CSVJSON拚花,獸人來源。

    • 評論column_comment

      用於描述列的字符串字麵值。

    • column_constraint

      預覽

      此功能已在公共預覽

      向Delta Lake表中的列添加主鍵或外鍵約束。

      控件中的表不支持約束hive_metastore目錄。

      向Delta Lake表使用添加檢查約束ALTER TABLE

    • table_constraint

      向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表不支持聚類。

      • 集群的

        指定用於群集每個分區的列集,如果沒有指定分區,則指定表。

        • cluster_column

          一個引用column_identifier在表中。如果指定多個列,則不能有重複項。由於群集操作在分區級別上,您不能將分區列也命名為群集列。

      • 可選地維護桶中行的排序順序。

        • sort_column

          用於對桶進行排序的列。列不能是分區列。排序列必須唯一。

        • ASCDESC

          (可選)指定是否sort_column按升序排序(ASC)或降序(DESC)秩序。默認值為ASC

      • 到num_buckets桶

        一個INTEGER字麵量,指定每個分區(如果沒有指定分區,則為表)劃分的桶數。

    • 位置路徑[與(憑據。credential_name)]

      存儲表數據的目錄的可選路徑,可以是分布式存儲上的路徑。路徑必須是STRING字麵值。如果沒有指定位置,則該表被認為是管理表格Databricks創建一個默認的表位置。

      指定位置使表成為外部表格

      中不駐留的表hive_metastore目錄表路徑必須由外部位置除非一個有效存儲憑證都是確定的。

      對於Delta Lake表,表配置繼承自位置如果有數據存在。因此,如果任何TBLPROPERTIEScolumn_specification,或分區通過子句是為Delta Lake表指定的,它們必須完全匹配Delta Lake位置數據。

    • 選項

      設置或重置一個或多個用戶定義的表選項。

    • 評論table_comment

      描述表的字符串字麵量。

    • TBLPROPERTIES

      可選地設置一個或多個用戶定義的屬性。

  • 作為查詢

    的數據填充表查詢.當您指定查詢您不能同時指定column_specification.表模式將從查詢中派生出來。

    注意,Databricks用輸入查詢的數據覆蓋底層數據源,以確保創建的表包含與輸入查詢完全相同的數據。

例子

——創建一個Delta表>創建表格學生idINT的名字字符串年齡INT);——使用另一個表的數據>創建表格student_copy作為選擇學生——從外部目錄創建CSV表>創建表格學生使用CSV位置“/ mnt / csv_files”——指定表注釋和屬性>創建表格學生idINT的名字字符串年齡INT評論“這是評論”TBLPROPERTIES“foo”“酒吧”);——用不同的子句順序指定表注釋和屬性>創建表格學生idINT的名字字符串年齡INTTBLPROPERTIES“foo”“酒吧”評論“這是評論”——創建分區表>創建表格學生idINT的名字字符串年齡INT分區通過年齡);用生成的列創建一個表>創建表格矩形一個INTbINT區域INT生成的總是作為一個b));