創建表(使用)

適用於:檢查標記是的磚的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}

參數

  • 取代

    如果指定替換表和它的內容是否已經存在。此條款僅支持三角洲湖表。

    取代保留了表的曆史

    請注意

    磚強烈建議使用取代而不是刪除和重新創建三角洲湖表。

  • 外部

    如果指定,創建一個外部表。當創建一個外部表你還必須提供位置條款。當一個外部表被刪除的文件位置不會被刪除。

  • 如果不存在

    如果指定一個表具有相同名稱已經存在,聲明將被忽略。

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

  • table_name

    要創建的表的名稱。必須不包含一個名稱時間規範。如果名字不是合格的當前模式中創建的表。

  • table_specification

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

    如果您不定義列表模式必須指定作為查詢位置

    • column_identifier

      一個獨特的列的名稱。

    • column_type

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

    • 非空

      如果指定列不會接受值。此條款僅支持三角洲湖表。

    • 生成的總是像(expr)

      當你指定這個子句這一列的值是由指定的決定expr

      expr可能是由文字、表內列標識符,和確定性,內置的SQL函數或運營商除了:

      expr必須不包含任何子查詢

    • 生成的{總是默認|}作為身份(((從開始)[增量步)))

      適用於:檢查標記是的磚的SQL檢查標記是的磚運行時10.3及以上

      定義了一個標識列。當你寫表,不提供標識列的值,它會自動分配一個獨特的和統計的增加(或減少一步是負的)價值。此條款僅支持三角洲湖表。這一條款隻能用於與長整型數字列數據類型。

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

      如果自動分配值範圍之外的身份列類型,查詢將失敗。

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

      不支持以下操作:

      • 分區標識列

      • 更新一個標識列

    • 默認default_expression

      適用於:檢查標記是的磚的SQLSQL倉庫2022.35版本或更高版本檢查標記是的磚運行時11.2及以上

      定義了一個默認的使用值的列插入,更新,合並插入如果不指定列值。

      如果沒有指定默認的默認的是申請空列。

      default_expression可能是由文字組成的,和內置的SQL函數或運算符除外:

      default_expression必須不包含任何子查詢

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

    • 評論column_comment

      一個字符串來描述列。

    • column_constraint

      預覽

      這個特性是在公共預覽

      添加一個主鍵或外鍵約束在三角洲湖表列。

      約束的表不支持hive_metastore目錄。

      檢查約束添加到三角洲湖表使用ALTER TABLE

    • table_constraint

      增加了一個信息主鍵或外鍵約束三角洲湖表。

      不支持鍵約束的表hive_metastore目錄。

      檢查約束添加到三角洲湖表使用ALTER TABLE

  • 使用data_source

    表的文件格式使用。data_source必須的:

    • 文本

    • AVRO

    • BINARYFILE

    • CSV

    • JSON

    • 拚花

    • 獸人

    • δ

    下列附加文件格式用於表在磚支持運行時:

    • JDBC

    • LIBSVM

    • 自定義實現的完全限定類名org.apache.spark.sql.sources.DataSourceRegister

    如果使用省略,默認的是什麼δ

    對於任何data_source除了δ您還必須指定一個位置除非表目錄hive_metastore

    以下適用於:磚運行時

    蜂巢支持在磚運行時創建一個蜂巢SerDe表。你可以指定Hive-specificfile_formatrow_format使用選項條款,這是一個不區分大小寫的字符串映射。的option_keys是:

    • FILEFORMAT

    • INPUTFORMAT

    • OUTPUTFORMAT

    • SERDE

    • FIELDDELIM

    • ESCAPEDELIM

    • MAPKEYDELIM

    • LINEDELIM

  • table_clauses

    選擇指定位置、分區、集群、選項,評論,新表和用戶定義的屬性。每個子條款可能隻被指定一次。

    • 分區的

      一個可選條款分區的表列的一個子集。

      請注意

      除非你定義一個三角洲湖表分區列引用列列規範總是移動到表的結束。

    • clustered_by_clause

      選擇集群每個分區表或成一個固定數量的散列桶使用列的一個子集。

      聚類不支持三角洲湖表。

      • 集群的

        指定的組列集群每個分區,或者如果沒有指定分區的表。

        • cluster_column

          一個標識符引用一個column_identifier在表中。如果你指定多個列不能重複。因為集群運作在分區級別你不能分區列也作為集群列名稱。

      • 選擇維護行一桶排序順序。

        • sort_column

          一種列的桶。列不能分區列。列必須是唯一的。

        • ASCDESC

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

      • 到num_buckets桶

        一個整數字麵指定的桶,每個分區的數量(或表如果沒有指定分區)是分裂的。

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

      一個可選的路徑目錄表數據存儲,可以在分布式存儲的路徑。路徑必須是一個字符串。如果您沒有指定位置表被認為是管理和磚創建一個默認的表的位置。

      對於一個三角洲湖表的表配置是繼承了位置如果數據存在。因此,如果任何TBLPROPERTIES,column_specification,或分區通過子句指定為三角洲湖表他們必須精確匹配三角洲湖的位置數據。

    • 選項

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

    • 評論table_comment

      一個字符串來描述表。

    • TBLPROPERTIES

      選擇一個或多個用戶定義的屬性集。

  • 作為查詢

    這個可選條款使用數據填充表查詢。當你指定一個查詢你也不能指定一個column_specification。表模式將派生形式查詢。

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

例子

——創建一個增量表>創建學生(idINT,的名字字符串,年齡INT);——使用另一個表的數據>創建student_copy作為選擇*學生;——創建一個CSV表從外部目錄>創建學生使用CSV位置“/ mnt / csv_files”;——指定表評論和屬性>創建學生(idINT,的名字字符串,年齡INT)評論“這是一個評論”TBLPROPERTIES(“foo”=“酒吧”);和屬性不同的條款——指定表意見>創建學生(idINT,的名字字符串,年齡INT)TBLPROPERTIES(“foo”=“酒吧”)評論“這是一個評論”;——創建分區表>創建學生(idINT,的名字字符串,年齡INT)分區通過(年齡);——創建一個表生成的列>創建矩形(一個INT,bINT,區域INT生成的總是作為(一個*b));