Hive在指定位置新增列(不刪除其他資料)

2021-10-22 15:14:18 字數 1883 閱讀 7569

通常,我們只使用hive的新增列命令,缺省會在表的最後面新增列,例如

# 新增1列

alter

table table_name add

columns

(user_id bigint

comment

'使用者id');

# 新增多列

alter

table table_name add

columns

( name string comment

'使用者名稱'

, city string comment

'城市'

, *** string comment

'使用者性別'

, age string comment

'使用者年齡'

, phone string comment

'使用者手機'

, email string comment

'使用者郵箱'

, unqiue_id string comment

'身份證id'

);

有時候,我們需要將列新增到指定位置,這就需要兩步

先新增欄位到最後(add columns),然後再移動到指定位置(change)

alter

table table_name add

columns

(c_time string comment

'當前時間');

-- 正確,新增在最後

alter

table table_name change c_time c_time string after address ;

-- 正確,移動到指定位置,address欄位的後面

第二種方式,我們可以通過先備份原表,再重新建表,然後重新從備份表載入歷史資料。

具體實現邏輯

-- 建立備份表

alter

table test.saleorder rename

to test.saleorder_bak;

-- 建立新錶

drop

table

ifexists test.saleorder ;

create

table test.saleorder (

order_id string comment

'訂單id'

,order_time string comment

'訂單時間(新加字段)'

,order_amount string comment

'訂單數量'

)row format delimited fields

terminated

by'\036'

stored as parquet;

-- 載入歷史資料

insert overwrite table test.saleorder

select

order_id,'',

order_amont

from saleorder_bak

--分割槽表處理的sql,採用動態分割槽載入

insert overwrite table dmr.dmr_sal_failure_rate_mly

partition

(part_sc,part_dt)

select

order_id,'',

order_amont,

part_sc,part_dt

from saleorder_bak

HIve 在指定位置新增字段

分兩步,先新增欄位到最後 add columns 然後再移動到指定位置 change alter table table name add columns c time string comment 當前時間 正確,新增在最後 alter table table name change c time...

Hive 在指定位置新增字段

此處僅為mark,方便檢視。搗騰了半天,終於找到解決方案了,hive定時任務原表新增欄位的方法 分兩步,先新增欄位到最後 add columns 然後再移動到指定位置 change alter table table name add columns c time string comment 當前...

在指定位置插入新列

來由 現有一張表test a,b,c 怎樣在a和b列之間插入新列d 希望結果 test a,d,b,c vivianfdlpw 2005.9 引用請保留此資訊 建立測試環境 create table test a varchar 20 b varchar 20 c varchar 20 go 允許系...