创建表(使用)

适用于:检查标记是的砖的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)]

      一个可选的路径目录表数据存储,可以在分布式存储的路径。路径必须是一个字符串。如果您没有指定位置表被认为是管理和砖创建一个默认的表的位置。

      使表指定一个位置外部表

      表不存在的hive_metastore目录表路径必须保护的吗外部位置除非一个有效存储凭证都是确定的。

      您不能创建外部表的位置重叠的位置管理表

      对于一个三角洲湖表的表配置是继承了位置如果数据存在。因此,如果任何TBLPROPERTIES,table_specification,或分区通过子句指定为三角洲湖表他们必须精确匹配三角洲湖的位置数据。

    • 选项

      集或重置一个或多个用户定义的表选项。

    • 评论table_comment

      一个字符串来描述表。

    • TBLPROPERTIES

      选择一个或多个用户定义的属性集。

  • 作为查询

    这个可选条款使用数据填充表查询。当你指定一个查询你也不能指定一个table_specification。表模式来源于查询。

    注意,砖覆盖底层数据源的数据输入的查询,以确保表创建包含完全相同的数据作为输入查询。

例子

——创建一个增量表>创建学生(idINT,的名字字符串,年龄INT);——使用另一个表的数据>创建student_copy作为选择*学生;——创建一个CSV表从外部目录>创建学生使用CSV位置“/ mnt / csv_files”;——指定表评论和属性>创建学生(idINT,的名字字符串,年龄INT)评论“这是一个评论”TBLPROPERTIES(“foo”=“酒吧”);和属性不同的条款——指定表意见>创建学生(idINT,的名字字符串,年龄INT)TBLPROPERTIES(“foo”=“酒吧”)评论“这是一个评论”;——创建分区表>创建学生(idINT,的名字字符串,年龄INT)分区通过(年龄);——创建一个表生成的列>创建矩形(一个INT,bINT,区域INT生成的总是作为(一个*b));