網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
新增字段
1、方法1
alter table 表名 add columns (列名 string COMMENT '新添加的列') CASCADE;
alter table 表名 add columns (列名 string COMMENT '新添加的列');
hive表中指定位置增加一個(gè)字段
分兩步,先添加字段到最后(add columns),然后再移動(dòng)到指定位置(change)
alter table 表名 add columns (列名 string comment '當(dāng)前時(shí)間'); -- 正確,添加在最后
alter table 表名 change 列名 string after 指定位置的列名; -- 正確,移動(dòng)到指定位置,address字段的后面
添加之后字段由于hive底層是文件和系列化的設(shè)計(jì),因此查數(shù)據(jù)會(huì)發(fā)現(xiàn)新增的列在所有已有列的后面
CASCADE會(huì)刷歷史分區(qū)字段
cascade知識(shí)
- cascade的中文翻譯為“級(jí)聯(lián)”,也就是不僅變更新分區(qū)的表結(jié)構(gòu)(metadata),同時(shí)也變更舊分區(qū)的表結(jié)構(gòu)。
- 對(duì)于刪除操作也是,級(jí)聯(lián)刪除表中的信息,當(dāng)表A中的字段引用了表B中的字段時(shí),一旦刪除B中該字段的信息,表A的信息也自動(dòng)刪除。(當(dāng)父表的信息刪除,子表的信息也自動(dòng)刪除)
- 標(biāo)準(zhǔn)語(yǔ)法如下:
2、方法2 (適用于外部表)
當(dāng)分區(qū)過(guò)多的情況下,直接使用alter就行增加字段會(huì)報(bào)錯(cuò)
第一步:刪除分區(qū) ,當(dāng)分區(qū)過(guò)多可以寫個(gè)for循環(huán)
alter table table_name drop if exists partition(par_col=col_name)
第二步:使用alter操作就行添加字段,這時(shí)候就不會(huì)因?yàn)榉謪^(qū)過(guò)多報(bào)錯(cuò)
第三步:進(jìn)行修復(fù)分區(qū)
msck repair table 表名;
3、方法3(下下策)
創(chuàng)建新表修改表名,進(jìn)行存儲(chǔ)原表數(shù)據(jù)
將原表進(jìn)行drop,再對(duì)新表進(jìn)行改名操作
ALTER TABLE old_name RENAME TO new_name;
修改字段
alter table table_name change column 已有列 修改名稱 類型 comment '';
刪除列
Hive不能直接刪除列,不然底層系列化就亂了,我們可以通過(guò)replace語(yǔ)句來(lái)替換整張表的字段,達(dá)到同樣的效果
alter table table_name replace columns(column_1 string);
語(yǔ)句中只寫想要保留的字段就可以
原文鏈接:https://blog.csdn.net/qq_42456324/article/details/120202236
相關(guān)推薦
- 2022-12-29 Kotlin?Service服務(wù)組件開(kāi)發(fā)詳解_Android
- 2022-11-21 Android性能優(yōu)化之JVMTI與內(nèi)存分配_Android
- 2022-05-07 Python關(guān)鍵字之global與nonlocal_python
- 2022-01-28 laravel try異常abort只報(bào)出最外層
- 2022-03-31 jenkins?實(shí)現(xiàn)shell腳本化定時(shí)執(zhí)行任務(wù)的方法_linux shell
- 2022-05-14 linq中的分區(qū)操作符_實(shí)用技巧
- 2022-11-12 C語(yǔ)言內(nèi)存操作函數(shù)使用示例梳理講解_C 語(yǔ)言
- 2023-03-30 Regex正則表達(dá)式判斷密碼強(qiáng)度_正則表達(dá)式
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支