ALTER TABLE

更改表的模式或屬性。

有關類型更改或重命名Delta Lake中的列,請參閱修改的數據

要更改表的注釋,請使用評論

如果表被緩存,該命令將清除表的緩存數據及其引用它的所有依賴項。當下次訪問表或依賴項時,緩存將被惰性填充。

需要的權限

如果你使用Unity Catalog,你必須有修改許可:

  • 改變列

  • 添加一列

  • 刪除列

  • 設置TBLPROPERTIES

  • 設置TBLPROPERTIES

所有其他操作都需要表的所有權。

語法

改變表格table_name重命名條款|添加條款|改變條款|下降條款|重命名條款|添加約束條款|下降約束條款|添加分區條款|下降分區條款|重命名分區條款|恢複分區條款|TBLPROPERTIES條款|設置TBLPROPERTIES條款|SERDE條款|位置條款|老板條款

參數

  • table_name

    標識正在更改的表。名稱中不能包含時間規範

  • 重命名為to_table_name

    在相同的模式中重命名表。

    請注意

    如果使用AWS Glue Data Catalog作為metastore,則不支持RENAME。

  • 添加一列

    不支持此子句JDBC數據源。

    向表中添加一個或多個列,或向Delta Lake表中的現有列添加字段。

    添加|column_identifier|field_namedata_type默認的條款評論評論第一個|標識符[,...
    • column_identifier

      要添加的列的名稱。名稱在表中必須是唯一的。

      除非第一個的名字指定後,列或字段將在末尾追加。

    • field_name

      要添加到現有列的字段的完全限定名。到嵌套字段的路徑的所有組件必須存在,並且字段名本身必須是唯一的。

    • 默認default_expression

      自:磚11.2運行時

      定義了一個默認的值的值插入而且合並...插入當未指定列時。

      如果沒有指定默認值,默認的隱含用於可為空的列。

      default_expression可由字麵量、內置SQL函數或操作符組成,但以下情況除外:

      default_expression不能包含任何子查詢

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

    • data_type

      指定列或字段的數據類型。並不是所有的數據類型所有數據源都支持Databricks。

    • 評論發表評論

      一個可選的STRING字麵值,描述所添加的列或字段。

    • 第一個

      如果指定了該列,則該列將被添加為表的第一列,或者該字段將被添加為包含結構中的第一個字段。

    • 標識符

      如果指定了列或字段,則將立即在字段或列之後添加列或字段標識符

  • 改變列

    更改屬性或列的位置。

    改變|改變column_identifier|field_name評論評論|第一個|column_identifier||下降|默認的條款|下降默認的|同步身份
    • column_identifier

      要修改的列的名稱。

    • field_name

      要修改的字段的完全限定名。到嵌套字段的路徑的所有組件必須存在。

    • 評論發表評論

      對象的描述column_name列。評論必須是STRING字麵值。

    • 第一個標識符

      將列從當前位置移動到前麵(第一個)或立即標識符.此子句僅在以下情況下被支持table_name是一個Delta表。

    • 集非空減少非空

      更改有效列值的域以排除空值,或包含空值下降.此選項僅支持Delta Lake表。Delta Lake將確保約束對所有現有和新數據有效。

    • 同步的身份

      自:磚10.3運行時

      同步標識列的元數據與實際數據。當您將自己的值寫入標識列時,它可能不符合元數據。該選項計算狀態並更新元數據,使其與實際數據一致。執行此命令後,下一個自動分配的標識值將從開始+(n+1)一步,在那裏n滿足的最小值是多少開始+n一步> =max ()(這是積極的一步)。

      此選項僅支持Delta Lake表上的標識列。

    • 降低違約

      自:磚11.1運行時

      從列中刪除默認表達式。對於可空列,這等價於默認的.定義的列您需要為每個未來提供一個值插入操作

  • 默認default_expression

    自:磚11.1運行時

    定義了一個默認的值的值插入而且合並...插入當未指定列時。

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

    default_expression可以由字麵量、內置SQL函數或操作符組成,但以下情況除外:

    default_expression不能包含子查詢

    默認的支持CSVJSON獸人,δ來源。

    為新添加的列定義默認值時,默認值將應用於所有已存在的行。如果默認包含一個非確定性函數,如蘭德current_timestamp時計算該值一次改變表格執行,並將其作為常量應用於已存在的行。對於新插入的行,默認表達式每行執行一次。

    當你設置一個默認使用改變現有行不受該更改的影響。

  • data_type

    指定列或字段的數據類型。並不是所有的數據類型所有數據源都支持Databricks。

  • 刪除列

    預覽

    此功能已在公共預覽

    自:磚11.0運行時

    在Delta Lake表中刪除一個或多個列或字段。

    刪除列或字段時,必須刪除相關的檢查約束和生成的列。

    要求,請參閱Databricks上的列映射

    下降|如果存在column_identifier|field_name[,...
    • 如果存在

      當你指定如果存在, Databricks運行時忽略刪除不存在的列的嚐試。否則,刪除不存在的列將導致錯誤。

    • column_identifier

      現有列的名稱。

    • field_name

      現有字段的完全限定名。

  • 重命名列

    預覽

    此功能已在公共預覽

    自:磚11.0運行時

    重命名Delta Lake表中的列或字段。

    重命名列或字段時,還需要更改相關的檢查約束和生成的列。使用該列的任何主鍵和外鍵都將被刪除。對於外鍵,您必須擁有定義了外鍵的表。

    要求,請參閱Databricks上的列映射

    重命名column_identifierto_column_identifier|field_nameto_field_identifier
  • 添加約束

    向表添加檢查約束、外鍵約束或主鍵約束。

    中的表不支持外鍵和主鍵hive_metastore目錄。

  • 下降的約束

    從表中刪除主鍵、外鍵或檢查約束。

  • 添加分區

    如果指定,則向表中添加一個或多個分區。Delta Lake表不支持添加分區。

    添加如果存在分區條款位置路徑...
    • 如果不存在

      如果分區已經存在,指示Databricks Runtime忽略語句的可選子句。

    • 分區條款

      要添加的分區。分區鍵必須與表的分區相匹配,並與值相關聯。如果分區已經存在,則會引發錯誤,除非如果存在已經指定。

    • 位置路徑

      路徑必須是一個STRING字麵值,表示指向分區的可選位置。

      如果沒有指定位置,則位置將從表和分區鍵的位置派生。

      如果在該位置存在文件,它們將填充分區,並且必須與data_source表及其選項的。

  • 刪除分區

    如果指定了該子句,則從表中刪除一個或多個分區,可選地刪除分區位置上的任何文件。

    Delta Lake表不支持刪除分區。

    下降如果存在分區條款[,...清洗
    • 如果存在

      當你指定如果存在Databricks將忽略刪除不存在分區的嚐試。否則,不存在的分區將導致錯誤。

    • 分區條款

      指定要刪除的分區。如果隻部分標識了分區,則刪除分區片。

    • 清洗

      如果設置了,表編目必須通過跳過Trash文件夾來刪除分區數據,即使編目已經配置了Trash文件夾。該選項僅適用於托管表。隻有在下列情況下才有效:

      文件係統支持“Trash”文件夾。編目已配置為將刪除的分區移動到Trash文件夾。AWS S3中沒有Trash文件夾,因此它是無效的。

      在刪除分區後,不需要手動刪除文件。

  • 重命名分區

    替換分區的鍵值。

    Delta Lake表不支持重命名分區。

    from_partition_clause重命名to_partition_clause
  • 恢複分區

    此條款不適用於德爾塔湖表。

    指示Databricks Runtime掃描表的位置,並將已直接添加到文件係統的任何文件添加到表中。

  • 設置TBLPROPERTIES

    設置或重置一個或多個用戶定義的屬性。

  • 設置TBLPROPERTIES

    刪除一個或多個用戶定義的屬性。

  • 設置的位置

    移動分區或表的位置。

    Delta Lake不支持移動Delta Lake表的單個分區。

    分區條款位置路徑
    • 分區條款

      可選地標識要更改其位置的分區。如果忽略分區的命名,Databricks將移動表的位置。

    • 位置路徑

      路徑必須是STRING字麵值。指定分區或表的新位置。

      在原始位置的文件將被轉移到新地點。

  • [set] owner to主要

    將表的所有權轉移到主要

    自:磚11.2運行時可以作為可選關鍵字。

例子

有關Delta Lake添加和更改列示例,請參見

——重命名表>描述學生col_namedata_type評論----------------------- --------- -------的名字字符串rollnoint年齡int分區信息col_namedata_type評論年齡int>改變表格學生重命名StudentInfo——重命名表後>描述StudentInfocol_namedata_type評論----------------------- --------- -------的名字字符串rollnoint年齡int分區信息col_namedata_type評論年齡int——重命名分區>顯示分區StudentInfo分區---------年齡10年齡11年齡12>改變表格默認的StudentInfo分區年齡“十”重命名分區年齡“15”);——重命名分區後>顯示分區StudentInfo分區---------年齡11年齡12年齡15向表中添加新列>描述StudentInfocol_namedata_type評論----------------------- --------- -------的名字字符串rollnoint年齡int分區信息col_namedata_type評論年齡int>改變表格StudentInfo添加字符串強加於人時間戳);——在向表中添加新列之後>描述StudentInfocol_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.——修改或更改列>描述StudentInfocol_namedata_type評論+-----------------------+---------+-------的名字字符串rollnoint字符串強加於人時間戳年齡int分區信息col_namedata_type評論年齡int改變表格StudentInfo改變的名字評論“新評論”——在ALTER或CHANGE COLUMNS之後>描述StudentInfocol_namedata_type評論----------------------- --------- -----------的名字字符串評論rollnoint字符串強加於人時間戳年齡int分區信息col_namedata_type評論年齡int——重命名列>改變表格StudentInfo重命名的名字FirstName之後,重命名列>描述StudentInfocol_namedata_type評論----------------------- --------- -----------FirstName字符串評論rollnoint字符串強加於人時間戳年齡int分區信息col_namedata_type評論年齡int—更改文件位置>改變表格dbxtab1分區一個' 1 'b' 2 '位置“/道路/ /部分/方式”設置SERDE/ SERDE屬性>改變表格test_tabSERDE“org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe”>改變表格dbxtab1SERDE“org.apache.hadoop”SERDEPROPERTIES“k”“v”“凱”“三角”設置表屬性>改變表格dbxtab1TBLPROPERTIES“贏家”“失敗者”);刪除表屬性>改變表格dbxtab1設置TBLPROPERTIES“贏家”);