hive常见操作命令
一.日期类型
获取当前时间yyyy-MM-dd HH:MM:ss
相关样例: select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss')
日期格式转换yyyyMMdd互转yyyy-MM-dd
select from_unixtime(unix_timestamp('20171205','yyyyMMdd'),'yyyy-MM-dd') 结果:2017-12-05
select from_unixtime(unix_timestamp('2017-12-05','yyyy-MM-dd'),'yyyyMMdd') 结果:20171205
具体日期函数介绍
获取当前时间戳 : unix_timestamp()
将时间戳 转换格式 :from_unixtime('时间戳','YYYY-MM-dd HH:mm:ss')
将日期转化成时间戳 日期格式必须是 yyyy-MM-ddHH:mm:ss 转换失败返回0 : unix_timestamp('')
二.常用DML语句
添加/删除具体分区值
删除分区: alter table table_name drop partition (dt='XXX')
添加分区: alter table table_name add partition (dt='XXX')
修改表名:alter table table_name rename to new_table_name
修改字段:alter table table_name change column 源字段名称 新字段名称 新字段类型 comment '新评论'
将修改字段放在某字段后面:alter table table_name change column 源字段名称 新字段名称 新字段类型 comment '新备注' after 原字段
添加列(可以同时添加多个字段用逗号分割):alter table table_name add columns (字段名称 string comment '备注')
修改表注释: alter table table_name set tblproperties('comment' = '新注释')
;
修改字段,类型,备注: alter table 表名 change column 原字段名称 现字段名称 数据类型 comment'备注'
添加/删除字段
添加: alter table table_name add columns(age int)
删除:重点(hive里面没有删除字段操作,需要从新添加需要使用的所有字段) 该逻辑除分区字段外最终只会保留id,sex两个字段 重重重点:操作不会删除分区字段!!!
alter table table_name replace columns (id string,sex int)
三. 在命令行中改命令可退出
!quit
四.null值转换
函数 nvl 解释:如果a是null,则结果是12,如果a不为null,结果则为a本身
select nvl(a,12)
if判断 解释:如果a是null,结果是5,否则是6
select if(a is null,5,6)
五.查询最新分区
select
b.*
from(
select max(dt) as mdt from table_name #获取最大分区值
)a join b #如果写where dt=的话会报错
on a.mdt=b.dt