ALTER TABLE

適用於:勾選“是”磚的SQL勾選“是”磚運行時

修改表的模式或屬性。

要更改類型或重命名Delta Lake中的列,請參閱重寫數據

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

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

需要的權限

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

  • 改變列

  • 添加一列

  • 刪除列

  • 設置TBLPROPERTIES

  • 設置TBLPROPERTIES

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

語法

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

參數

  • table_name

    標識要更改的表。名稱中不能包含時間規範.如果找不到表,數據庫會拋出一個TABLE_OR_VIEW_NOT_FOUND錯誤。

  • 重命名為to_table_name

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

    請注意

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

  • 添加一列

    不支持此子句JDBC數據源。

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

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

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

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

    • field_name

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

    • 默認default_expression

      適用於:勾選“是”磚的SQLSQL倉庫版本2022.35或更高版本勾選“是”Databricks運行時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表。

    • 設置不為空Drop not null

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

    • 同步的身份

      適用於:勾選“是”磚的SQL勾選“是”Databricks Runtime 10.3及以上版本

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

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

    • 降低違約

      適用於:勾選“是”磚的SQLSQL倉庫版本2022.35或更高版本勾選“是”Databricks運行時11.2及以上

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

  • 默認default_expression

    適用於:勾選“是”磚的SQLSQL倉庫版本2022.35或更高版本勾選“是”Databricks運行時11.2及以上

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

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

    default_expression可以由文字、內置SQL函數或操作符組成,除非:

    default_expression不能包含子查詢

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

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

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

  • data_type

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

  • 刪除列

    預覽

    此功能已在公共預覽

    適用於:勾選“是”磚的SQL勾選“是”Databricks運行時11.0及以上

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

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

    有關需求,請參見使用Delta Lake列映射重命名和刪除列

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

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

    • column_identifier

      現有列的名稱。

    • field_name

      現有字段的完全限定名。

  • 重命名列

    預覽

    此功能已在公共預覽

    適用於:勾選“是”磚的SQL勾選“是”Databricks運行時11.0及以上

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

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

    有關需求,請參見使用Delta Lake列映射重命名和刪除列

    重命名column_identifierto_column_identifier|field_nameto_field_identifier
  • 添加約束

    將檢查約束、信息外鍵約束或信息主鍵約束添加到表中。

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

  • 下降的約束

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

  • 添加分區

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

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

      一個可選子句,指示Databricks在分區已經存在時忽略該語句。

    • 分區條款

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

    • 位置路徑

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

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

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

  • 刪除分區

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

    Delta Lake表不支持刪除分區。

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

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

    • 分區條款

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

    • 清洗

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

      文件係統支持垃圾文件夾。已為將刪除的分區移動到Trash文件夾配置了目錄。AWS S3中沒有垃圾文件夾,因此無效。

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

  • 重命名分區

    替換分區的鍵。

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

    from_partition_clause重命名to_partition_clause
  • 恢複分區

    本條款不適用於Delta Lake表。

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

  • 設置TBLPROPERTIES

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

  • 設置TBLPROPERTIES

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

  • 設置的位置

    移動分區或表的位置。

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

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

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

    • 位置路徑

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

      原始位置的文件將被刪除被轉移到新的位置。

  • [set] owner to主要

    將表的所有權轉移到主要

    適用於:勾選“是”磚的SQLSQL倉庫版本2022.35或更高版本勾選“是”Databricks運行時11.2及以上

    允許作為可選關鍵字。

例子

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

——RENAME表>描述學生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.——ALTER或CHANGE列>描述StudentInfocol_namedata_type評論+-----------------------+---------+-------的名字字符串rollnoint字符串強加於人時間戳年齡int分區信息col_namedata_type評論年齡int改變表格StudentInfo改變的名字評論“新評論”——在ALTER或CHANGE COLUMNS之後>描述StudentInfocol_namedata_type評論----------------------- --------- -----------的名字字符串評論rollnoint字符串強加於人時間戳年齡int分區信息col_namedata_type評論年齡int——重命名列>改變表格StudentInfo重命名的名字FirstName——在RENAME列之後>描述StudentInfocol_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“贏家”);