創建表[使用]

適用於:勾選“是”磚的SQL勾選“是”磚運行時

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

語法

創建取代表格|創建外部表格如果存在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 |默認}作為標識[([以START開始][按步遞增])]

      適用於:勾選“是”磚的SQL勾選“是”Databricks Runtime 10.3及以上版本

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

      自動分配的值以開始然後增加一步.賦值是唯一的,但不保證是連續的。兩個參數均可選,默認值為1。一步不能0

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

      總是使用時,您不能為標識列提供自己的值。

      不支持以下操作:

      • 按標識列劃分

      • 更新標識列

    • 默認default_expression

      適用於:勾選“是”磚的SQLSQL倉庫版本2022.35或更高版本勾選“是”Databricks運行時11.2及以上

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

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

      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

    • 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表不支持集群。

      • 集群的

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

        • cluster_column

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

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

        • sort_column

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

        • ASCDESC

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

      • INTO 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));