ALTER TABLE
更改表的模式或屬性。
有關類型更改或重命名Delta Lake中的列,請參閱修改的數據.
要更改表的注釋,請使用評論.
如果表被緩存,該命令將清除表的緩存數據及其引用它的所有依賴項。當下次訪問表或依賴項時,緩存將被惰性填充。
語法
改變表格table_name{重命名來條款|添加列條款|改變列條款|下降列條款|重命名列條款|添加約束條款|下降約束條款|添加分區條款|下降分區條款|重命名分區條款|恢複分區條款|集TBLPROPERTIES條款|設置TBLPROPERTIES條款|集SERDE條款|集位置條款|集老板來條款}
參數
標識正在更改的表。名稱中不能包含時間規範.
重命名為to_table_name
在相同的模式中重命名表。
請注意
如果使用AWS Glue Data Catalog作為metastore,則不支持RENAME。
標識新表名。名稱中不能包含時間規範.
添加一列
不支持此子句
JDBC
數據源。向表中添加一個或多個列,或向Delta Lake表中的現有列添加字段。
{添加[列|列]({{column_identifier|field_name}data_type[默認的條款][評論評論][第一個|後標識符]}[,...])}
要添加的列的名稱。名稱在表中必須是唯一的。
除非
第一個
或後的名字
指定後,列或字段將在末尾追加。要添加到現有列的字段的完全限定名。到嵌套字段的路徑的所有組件必須存在,並且字段名本身必須是唯一的。
默認default_expression
自:磚11.2運行時
定義了一個
默認的
值的值插入
而且合並...插入
當未指定列時。如果沒有指定默認值,
默認的零
隱含用於可為空的列。default_expression
可由字麵量、內置SQL函數或操作符組成,但以下情況除外:default_expression
不能包含任何子查詢.默認的
支持CSV
,JSON
,拚花
,獸人
來源。指定列或字段的數據類型。並不是所有的數據類型所有數據源都支持Databricks。
評論發表評論
一個可選的STRING字麵值,描述所添加的列或字段。
第一個
如果指定了該列,則該列將被添加為表的第一列,或者該字段將被添加為包含結構中的第一個字段。
後標識符
如果指定了列或字段,則將立即在字段或列之後添加列或字段
標識符
.
改變列
更改屬性或列的位置。
{{改變|改變}[列]{column_identifier|field_name}{評論評論|{第一個|後column_identifier}|{集|下降}不零|集默認的條款|下降默認的|同步身份}}
要修改的列的名稱。
要修改的字段的完全限定名。到嵌套字段的路徑的所有組件必須存在。
評論發表評論
對象的描述
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
不能包含子查詢.默認的
支持CSV
,JSON
,獸人
,δ
來源。為新添加的列定義默認值時,默認值將應用於所有已存在的行。如果默認包含一個非確定性函數,如
蘭德
或current_timestamp
時計算該值一次改變表格
執行,並將其作為常量應用於已存在的行。對於新插入的行,默認表達式每行執行一次。當你設置一個默認使用
改變列
現有行不受該更改的影響。指定列或字段的數據類型。並不是所有的數據類型所有數據源都支持Databricks。
刪除列
預覽
此功能已在公共預覽.
自:磚11.0運行時
在Delta Lake表中刪除一個或多個列或字段。
刪除列或字段時,必須刪除相關的檢查約束和生成的列。
要求,請參閱Databricks上的列映射.
下降[列|列][如果存在]({{column_identifier|field_name}[,...])
如果存在
當你指定
如果存在
, Databricks運行時忽略刪除不存在的列的嚐試。否則,刪除不存在的列將導致錯誤。現有列的名稱。
現有字段的完全限定名。
重命名列
預覽
此功能已在公共預覽.
自:磚11.0運行時
重命名Delta Lake表中的列或字段。
重命名列或字段時,還需要更改相關的檢查約束和生成的列。使用該列的任何主鍵和外鍵都將被刪除。對於外鍵,您必須擁有定義了外鍵的表。
要求,請參閱Databricks上的列映射.
重命名列{column_identifier來to_column_identifier|field_name來to_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掃描表的位置,並將已直接添加到文件係統的任何文件添加到表中。
設置或重置一個或多個用戶定義的屬性。
刪除一個或多個用戶定義的屬性。
設置的位置
移動分區或表的位置。
Delta Lake不支持移動Delta Lake表的單個分區。
[分區條款]集位置路徑
可選地標識要更改其位置的分區。如果忽略分區的命名,Databricks將移動表的位置。
位置路徑
路徑
必須是STRING字麵值。指定分區或表的新位置。在原始位置的文件將不被轉移到新地點。
[set] owner to主要
將表的所有權轉移到
主要
.自:磚11.2運行時
集
可以作為可選關鍵字。
例子
有關Delta Lake添加和更改列示例,請參見
——重命名表>描述學生;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改變列的名字評論“新評論”;——在ALTER或CHANGE COLUMNS之後>描述StudentInfo;col_namedata_type評論----------------------- --------- -----------的名字字符串新評論rollnoint零姓字符串零強加於人時間戳零年齡int零#分區信息#col_namedata_type評論年齡int零——重命名列>改變表格StudentInfo重命名列的名字來FirstName;之後,重命名列>描述StudentInfo;col_namedata_type評論----------------------- --------- -----------FirstName字符串新評論rollnoint零姓字符串零強加於人時間戳零年齡int零#分區信息#col_namedata_type評論年齡int零—更改文件位置>改變表格dbx.tab1分區(一個=' 1 ',b=' 2 ')集位置“/道路/ /部分/方式”設置SERDE/ SERDE屬性>改變表格test_tab集SERDE“org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe”;>改變表格dbx.tab1集SERDE“org.apache.hadoop”與SERDEPROPERTIES(“k”=“v”,“凱”=“三角”)設置表屬性>改變表格dbx.tab1集TBLPROPERTIES(“贏家”=“失敗者”);刪除表屬性>改變表格dbx.tab1設置TBLPROPERTIES(“贏家”);