a 建立一張和原表一樣表結構的複製表
b 通過插入語句(insert overwrite),使用動態分割槽把資料匯入複製表
set hive.
exec
.dynamic.
partition
.mode
=nonstrict;
create
table table_copy like table_original;
insert overwrite table table_copy partition
(product_id,period_type,pt)
select city_id,city_name,site,product_id as product_id,period_type as period_type,pt as pt from table_original;
a 建立一張和原表一樣表結構的複製表
b 複製表table_original目錄下的hdfs檔案到表table_copy
c 使用分割槽表的msck命令重新生成分割槽
create
table table_copy like table_original;
dfs -cp hdfs://user/hive/warehouse/temp.db/table_original/* hdfs://user/hive/warehouse/temp.db/table_copy/;
msck repair table
temp
.table_copy;
該方法比使用動態分割槽速度更快,因為資料的複製是直接使用的hdfs檔案,而不是啟動mapreduce作業
在元資料平台中修改hive表字段型別,需先將下游依賴去掉,才可修改
修改欄位時選擇【不級聯】
級聯:舊資料存在無法讀取的風險,建議重刷舊資料,對新資料無影響a 刪除需要修復的資料分割槽不級聯:新舊資料均能讀取,但存在新舊欄位不一致的風險
b 使用動態分割槽,對複製表轉換修改字段型別,插入原表
alter
table table_original drop
partition
(pt>=
'20190331000000');
set hive.
exec
.dynamic.
partition
.mode
=nonstrict;
insert overwrite table table_original
partition
(product_id,period_type,pt)
select city_id,city_name,site,cast(location_id as string) location_id,product_id as product_id,period_type as period_type,pt as pt
from table_copy where pt between
'20190410000000'
and'20190425000000'
Hive 新增 更改表字段型別
新增字段表 alter table 表名 add columns 欄位名 資料型別 alter table table name add columns c time string comment 當前時間 正確,新增在最後 alter table table name change c time ...
Oracle應用之修改表字段型別
mysql對於有資料和沒資料的表字段型別都可以隨意修改,不過oracle就不一樣。假如表a有個字段a,本來為number型別,然後我們想修改為varchar2型別。1 欄位a沒資料的情況,改為varchar2 10 可以如下 alter table a modify a varchar2 10 2 ...
Oracle修改表字段以及表型別
win7 oracle pl sql 一張表 lyz emp 建立表lyz emp create table lyz emp e id number 10 not null e oldname varchar2 2 not null primary key e id 測試表lyz emp是否建立成功...