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;