ALTER TABLE

適用於:檢查標記是的磚的SQL檢查標記是的磚運行時

改變了模式或一個表的屬性。

更改或重命名列型三角洲湖修改的數據

改變評論表使用評論

如果緩存表,表的命令清除緩存數據及其家屬,引用它。緩存會懶洋洋地填在表或家屬下次訪問。

語法

改變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(“贏家”);