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