ALTER TABLE

适用于:检查标记是的砖的SQL检查标记是的砖运行时

改变了模式或一个表的属性。

更改或重命名列型三角洲湖修改的数据

改变评论表使用评论

如果缓存表,表的命令清除缓存数据及其家属,引用它。缓存会懒洋洋地填在表或家属下次访问。

需要的权限

如果你必须使用统一的目录修改许可:

  • 改变列

  • 添加一列

  • 删除列

  • 设置TBLPROPERTIES

  • 设置TBLPROPERTIES

表的所有其他操作要求所有权。

语法

改变table_name{重命名条款|添加条款|改变条款|下降条款|重命名条款|添加约束条款|下降约束条款|添加分区条款|下降分区条款|重命名分区条款|恢复分区条款|TBLPROPERTIES条款|设置TBLPROPERTIES条款|SERDE条款|位置条款|老板条款}

参数

  • table_name

    标识表被修改。必须不包含一个名称时间规范。如果表不能发现砖了TABLE_OR_VIEW_NOT_FOUND错误。

  • 重命名为to_table_name

    重命名表在同一个模式。

    请注意

    如果你使用AWS胶metastore数据目录,重命名不支持。

  • 添加一列

    这一条款不支持JDBC数据源。

    将一个或多个列添加到表或字段现有三角洲湖表中的列。

    {添加(|]({{column_identifier|field_name}data_type(默认的条款](评论评论](第一个|标识符]}(,])}
    • column_identifier

      添加的列的名称。在表的名称必须是惟一的。

      除非第一个的名字指定列或字段将被附加。

    • field_name

      的完全限定名称字段添加到现有的列。所有组件的嵌套域的路径必须存在和字段名称本身必须是唯一的。

    • 默认default_expression

      适用于:检查标记是的砖的SQLSQL仓库2022.35版本或更高版本检查标记是的砖运行时11.2及以上

      定义了一个默认的使用值的列插入合并插入如果不指定列值。

      如果没有指定默认值,默认的是空列的暗示。

      default_expression可能是由文字组成的,和内置的SQL函数或运算符除外:

      default_expression必须不包含任何子查询

      默认的支持CSV,JSON,拼花,兽人来源。

    • data_type

      指定列的数据类型或字段。并不是所有的数据类型支持的砖都支持的数据源。

    • 评论发表评论

      一个可选的字符串文字描述添加列或字段。

    • 第一个

      如果指定的列将被添加作为表的第一列,或第一个字段的字段将被添加在包含结构。

    • 标识符

      如果指定的列或字段字段或列后立即将被添加标识符

  • 改变列

    改变一个属性或一列的位置。

    {{改变|改变}(]{column_identifier|field_name}{评论评论|{第一个|column_identifier}|{|下降}|默认的条款|下降默认的|同步身份}}
    • column_identifier

      被修改的列的名称。

    • field_name

      场的完全限定名称被改变。所有组件的嵌套域的路径必须存在。

    • 评论发表评论

      改变的描述column_name列。评论必须是一个字符串。

    • 第一个标识符

      将列从当前位置到前面(第一个)或立即标识符。如果此条款仅支持table_name是一个三角洲表格。

    • 集非空减少非空

      更改域的有效排除null列值,或包含null下降。此选项仅支持三角洲湖表。三角洲湖将确保所有现有的和新数据的约束是有效的。

    • 同步的身份

      适用于:检查标记是的砖的SQL检查标记是的砖运行时10.3及以上

      同步标识列的元数据和实际的数据。当您编写自己的价值观来一个标识列,它可能不符合的元数据。这个选项对国家和更新元数据与实际数据相一致。这个命令之后,下一个自动分配值将从身份开始+(n+1)*一步,在那里n是满足的最小值开始+n*一步> =max ()(对于一个积极的步骤)。

      此选项仅支持三角洲湖上标识列的表。

    • 降低违约

      适用于:检查标记是的砖的SQLSQL仓库2022.35版本或更高版本检查标记是的砖运行时11.2及以上

      删除默认表达式列。这相当于为nullable列默认的。为列定义您需要提供一个值在每一个未来插入操作

    • 默认default_expression

      适用于:检查标记是的砖的SQLSQL仓库2022.35版本或更高版本检查标记是的砖运行时11.2及以上

      定义了一个默认的使用值的列插入合并插入如果不指定列值。

      如果没有指定默认的默认的是空列的暗示。

      default_expression可能是由文字组成的,内置的SQL函数,或者运营商除了:

      default_expression不能包含一个子查询

      默认的支持CSV,JSON,兽人,拼花来源。

      当你为一个新添加的列定义默认值,默认的适用于所有的行。如果默认包含一个非确定性等功能兰德current_timestamp当价值计算一次改变执行,应用已有的行作为一个常数。对于新插入的行,默认表达式每运行一次行。

      当你设置一个默认使用改变不受变化的影响,现有的行。

    • data_type

      指定列的数据类型或字段。并不是所有的数据类型支持的砖都支持的数据源。

  • 删除列

    预览

    这个特性是在公共预览

    适用于:检查标记是的砖的SQL检查标记是的砖运行时11.0及以上

    下降一个或多个列在三角洲湖表或字段。

    当你删除一个列或字段,你必须依赖检查约束和生成的列。

    要求,请参阅重命名和删除列与三角洲湖列映射

    下降(|](如果存在]({{column_identifier|field_name}(,])
    • 如果存在

      当你指定如果存在,砖忽略试图删除列不存在。否则,删除不存在的列将会导致一个错误。

    • column_identifier

      已有的列的名称。

    • field_name

      现有的完全限定名称字段。

  • 重命名列

    预览

    这个特性是在公共预览

    适用于:检查标记是的砖的SQL检查标记是的砖运行时11.0及以上

    重命名表或字段在三角洲湖一列。

    在您重命名列或字段还需要改变相关的检查约束和生成的列。任何主键和外键列将被删除。的外键必须自己的表定义外键。

    要求,请参阅重命名和删除列与三角洲湖列映射

    重命名{column_identifierto_column_identifier|field_nameto_field_identifier}
  • 添加约束

    增加了检查约束,信息外键约束,或信息表主键约束。

    只支持外键和主键的表统一目录,而不是hive_metastore目录。

  • 下降的约束

    滴一个主键、外键或从表检查约束。

  • 添加分区

    如果指定了将一个或多个分区添加到表中。不支持添加分区三角洲湖表。

    添加(如果存在]{分区条款(位置路径]}(]
    • 如果不存在

      一个可选条款指导砖忽略声明如果分区已经存在。

    • 分区条款

      添加一个分区。分区键必须匹配的分区表和与价值观有关。如果分区了,除非已经存在一个错误如果存在已经指定。

    • 位置路径

      路径必须是一个字符串代表一个可选的位置指向分区。

      如果没有指定位置的位置将由表和分区键的位置。

      如果有文件出席位置他们填充分区,必须兼容data_source的表和它的选项。

  • 删除分区

    如果指定这个子句滴从表中一个或多个分区,分区的位置选择删除任何文件。

    三角洲湖表不支持删除的分区。

    下降(如果存在]分区条款(,](清洗]
    • 如果存在

      当你指定如果存在砖将忽略试图删除分区不存在。否则,非现有分区将导致一个错误。

    • 分区条款

      指定要删除一个分区。如果分区只是部分确定了片分区被删除。

    • 清洗

      如果设置,通过跳过表目录必须删除分区数据即使在垃圾文件夹目录配置。适用的选项只对管理表。它是有效的只有:

      文件系统支持垃圾文件夹。目录已经被配置为将被删除分区移动到垃圾文件夹。在AWS S3没有垃圾文件夹,所以它不是有效的。

      不需要手动删除文件后删除分区。

  • 重命名分区

    替换一个分区的键。

    三角洲湖表不支持重命名分区。

    from_partition_clause重命名to_partition_clause
  • 恢复分区

    这一条款并不适用于三角洲湖表。

    指示砖扫描表的位置,并将任何文件添加到表已被直接添加到文件系统。

  • 设置TBLPROPERTIES

    集或重置一个或多个用户定义的属性。

  • 设置TBLPROPERTIES

    删除一个或多个用户定义的属性。

  • 设置的位置

    移动一个分区或表的位置。

    三角洲湖不支持移动个人三角洲湖表的分区。

    (分区条款]位置路径
    • 分区条款

      可选标识分区的位置将被改变。如果您省略命名一个分区数据砖表的位置移动。

    • 位置路径

      路径必须是一个字符串。指定分区的新位置或表。

      文件将在原来的位置被移动到新的位置。

  • 组所有者主要

    转移所有权的表主要

    适用于:检查标记是的砖的SQLSQL仓库2022.35版本或更高版本检查标记是的砖运行时11.2及以上

    可以作为一个可选的字。

例子

对三角洲湖添加约束和改变列的例子,看看

——重命名表>描述学生;col_namedata_type评论- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -的名字字符串rollnoint年龄int#分区信息#col_namedata_type评论年龄int>改变学生重命名StudentInfo;之后,重命名表>描述StudentInfo;col_namedata_type评论- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -的名字字符串rollnoint年龄int#分区信息#col_namedata_type评论年龄int——重命名分区>显示分区StudentInfo;分区- - - - - - - - - - - -年龄=10年龄=11年龄=12>改变默认的StudentInfo分区(年龄=“十”)重命名分区(年龄=“15”);之后,重命名分区>显示分区StudentInfo;分区- - - - - - - - - - - -年龄=11年龄=12年龄=15——添加新列一个表>描述StudentInfo;col_namedata_type评论- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -的名字字符串rollnoint年龄int#分区信息#col_namedata_type评论年龄int>改变StudentInfo添加(字符串,强加于人时间戳);之后,添加新列的表>描述StudentInfo;col_namedata_type评论- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -的名字字符串rollnoint字符串强加于人时间戳年龄int#分区信息#col_namedata_type评论年龄int——添加一个新的分区表>显示分区StudentInfo;分区- - - - - - - - - - - -年龄=11年龄=12年龄=15>改变StudentInfo添加如果存在分区(年龄=18);之后,添加一个新的分区表>显示分区StudentInfo;分区- - - - - - - - - - - -年龄=11年龄=12年龄=15年龄=18——从表中删除一个分区>显示分区StudentInfo;分区- - - - - - - - - - - -年龄=11年龄=12年龄=15年龄=18>改变StudentInfo下降如果存在分区(年龄=18);之后,删除的分区表>显示分区StudentInfo;分区- - - - - - - - - - - -年龄=11年龄=12年龄=15——添加多个分区表>显示分区StudentInfo;分区- - - - - - - - - - - -年龄=11年龄=12年龄=15>改变StudentInfo添加如果存在分区(年龄=18)分区(年龄=20.);之后,将多个分区添加到表中>显示分区StudentInfo;分区- - - - - - - - - - - -年龄=11年龄=12年龄=15年龄=18年龄=20.——改变或改变列>描述StudentInfo;col_namedata_type评论+- - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - -的名字字符串rollnoint字符串强加于人时间戳年龄int#分区信息#col_namedata_type评论年龄int改变StudentInfo改变的名字评论“新评论”;之后,改变或改变列>描述StudentInfo;col_namedata_type评论- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -的名字字符串评论rollnoint字符串强加于人时间戳年龄int#分区信息#col_namedata_type评论年龄int——重命名列>改变StudentInfo重命名的名字FirstName;之后,重命名列>描述StudentInfo;col_namedata_type评论- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -FirstName字符串评论rollnoint字符串强加于人时间戳年龄int#分区信息#col_namedata_type评论年龄int——改变文件的位置>改变dbxtab1分区(一个=' 1 ',b=' 2 ')位置“/道路/ /部分/方式”——设置SERDE / SERDE属性(DBR)>改变test_tabSERDE“org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe”;>改变dbxtab1SERDE“org.apache.hadoop”SERDEPROPERTIES(“k”=“v”,“凯”=“三角”)——设置表属性>改变dbxtab1TBLPROPERTIES(“赢家”=“失败者”);——删除表属性>改变dbxtab1设置TBLPROPERTIES(“赢家”);