专注于分布式,性能优化,代码之美

hive语法学习

--显示表的所有字段
desc tablename;
---显示表的创建脚本
show create table tablename;
---格式化当前时间
from_unixtime(unix_timestamp(),'yyyy-MM-dd');
---当前时间后一天
date_add(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),1);

---当前时间前一天
date_add(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),-1);

--删除分区
ALTER TABLE tablename DROP IF EXISTS PARTITION (dt='MHA');

---修改分区2021-11-07 为 2021-11-09
ALTER TABLE tablename PARTITION (dt='2021-11-07') RENAME TO PARTITION (dt='2021-11-09');

--字段column_1,column_2将添加在原表的最后面
alter table table_name add columns (column_1 string,column_2 int) ;

--修改字段
alter table table_name change column__1 a1 string;

--修改字段类型
Alter table 表名 change column 原字段名称 现字段名称 数据类型
alter table tablename partition(dt='2001-10-23') rename to partition(dt='new_dt')

--移动位置
alter table table_name change c_time c_time string after column_1 ; -- 移动到指定位置,column_1字段的后面

--原有Hive表test_change中有a,b,c,d,e这几个字段
-- 将从test_change中删除“d”列:
ALTER TABLE test_change REPLACE COLUMNS (a int, b int,c string,e string);
---将d和e两列一起删除:
ALTER TABLE test_change REPLACE COLUMNS (a int, b int,c string);

---修改columns的字段类型为bigint类型
Alter table tablename
change column oldcolumn newcolumn bigint;


1.Hive 表修改字段类型
Alter table 表名  change column 原字段名称  现字段名称  数据类型
2.新增字段表
alter table 表名 add columns(字段名 数据类型)
3.时间类型的字段设置为date时显示不出来的问题


--hive中不能修改数据,只能先删除,在插入,直接插入覆盖
insert overwrite table tablename partition(dt ='2021-12-15' )
select 'aaa' as columns1, 'bbb' as columns2;

insert into table tablename
values('aaa','bbb',1,'ccc'),
('ddd','bbb',2,'ccc'),
('eee','bbb',3,'ccc');


--批量插入分区表
insert overwrite table tablename partition (dt='2001-10-10')
select 'aaa' as column1, 'bbb' as column2, 'ccc' as column3
union all
select 'ddd' as column1, 'eee' as column2, 'fff' as column3;

---上上个月最后一天的
dt=last_day (add_months('${hivevar:v_today}',-2))

---上个月最后一天的
dt=last_day (add_months('${hivevar:v_today}',-1))

---获取上个月第一天
select add_months('${hivevar:v_month}',-1)
---当前月第一天
select '${hivevar:v_month}'

---拼接
add_months(CONCAT(date_format(dt,'yyyy-MM'),'-01')

---向指定分区中追加数据
insert overwrite table tablename partition(dt = '2022-06-15' )
select column from tablename ;

---查询最大长度
select length(prd_name) as c from tablename where length(prd_name) >130

insert overwrite table tablename partition(dt = '2022-07-31' )
select * from tablename ;


---分区表添加字段
alter table tablename add columns(
column bigint
) cascade;

posted on 2022-11-07 21:50  xiaohouye  阅读(190)  评论(0编辑  收藏  举报

导航

今日之劳累是为了铸造明日之辉煌,不管年龄多少,都无法阻挡我对软件艺术的追求!