库操作
创建库
create databases if not exists 库名;
删除库
drop databases 库名 restrict; restrict 默认关键字(可不写)只能删除空库,里边没有表的;
drop databases if exists 库名
drop databases 库名 cascade; cascade强制删除
查看库的列表信息
show databases;
使用库
use databases;
查看正在使用的库
select current_databases();
查看库信息
desc databases 库名;
可使用模糊查询 show databases 库名 like 'my%'
修改库
基本不用
表的操作
创建表示例(hive sql)
create [external] table [if not exists] table_name (clo_name type comment "字段描述") comment '表描述'
[partitioned by (col_name type [comment '描述'])]
[clustered by (col_name,col_name,...)]
[sorted by (col_name [asc|desc],...)into num_buckets buskets]
[row format row_format]
[stored as file_format]
[location hdfs_path]
关键字讲解如下:
1)external 关键字:是否创建外部表,不加时是创建内部表,加上external关键字创建的是外部表
2)partitioned by (col_name type [comment '描述']):指定分区字段
分区表存的是不同的目录
分区表在添加数据之前先添加分区
alter table table_name add if not exists partition(col_name ='一个分区')
注意:分区字段一定不是建表字段中的字段,是一个全新的字段
3)clustered by (col_name,col_name,...)指定分桶字段clustered by
sorted by (col_name [asc|desc],...) into num_buckets buskets 指定排序字段
注意:分桶字段一定是建表语句中的某一个字段或多个字段
排序规则指定的是在同一个分桶内的排序规则
into num_buckets buskets;指定分桶个数num_buckets
判断依据:根据建表语句模板字段后边是否跟type类型,因为一个字段在建表语句中不会建两次
4)[row format row_format] 指定分隔符
delimited fields terminated by '' 指定列分隔符
lines terminated by '' 指定行分隔符
5)[stored as file_format] 指定最终表数据的存储格式
textfile 文本格式 默认的格式
rcfile 行列结合的格式
parquet 压缩格式
6)[location hdfs_path] 指定hive 上表的hdfs上的存储路径
不指定的话,存储在配置的路径下
没指定没配置,默认在 /user /hive /warehouse
复制表,复制表结构不复制数据
create table t1 like t2;
查看表
show tables;
show tables in 库名;
show tables like 's%';
查看表信息
desc 表名:显示表字段
desc extended 表名:显示表的详细信息(由左至右,连续在一起)
desc formatted 表名:格式化显示表的详细信息(规整的,一行一行的)
删除表
drop table if exists 表名;
清空表
truncate table 表名;清空表中的数据,保留表结构
修改表 alter
修改表名称
alter table 表名 rename to 新表名;
修改表字段信息
1)添加字段
alter table 表名 add columns (col_name type,col_name type);
所有新的字段一定要指定类型
2)修改字段,修改字段类型
alter table 表名 chage 原始字段 新字段 新字段类型;
注意:在进行修改表字段定义的时候一定注意表字段类型之间的匹配 只能小类型转大类型
string 类型相当于数值类型属于大类型
hive1.2.2中没有限制,各种类型之间都可以进行修改
3)替换列
alter table table_name replacr columns (in int,name string);由原始表全部字段替换成两个
修改表分区信息
1)添加分区
alter table table_name add if not exists partition(city='beijing')
添加分区的过程中,还可以指定分区的存储路径
alter table table_name add if not exists partition(city='beijing') location '/user/beijing'
2)修改分区 修改分区的存储路径
alter table table_name set partition(city='shenzhen') location '/user/shenzhen'
3)删除分区
alter table table_name drop if exists partition(city='beijing')
查看分区信息,针对分区表
show partitions table_name;
show partitions table_name partiton(city='beijing')
DDL和DML操作如下