create database if not exists hive_db;
在文件中执行时必须要写成这个标准模式
2.查询数据库
2.1 显示数据库
show databases;
2.2 过滤显示查询的数据库
show database like 'hvie*';
3.查看数据库
3.1 显示数据库信息
desc database db_hive;
3.2 显示数据库详细信息
desc database extended db_hive;
4.修改数据库
alter database hive_db set dbproperties('createtime'='20190806')
数据库的其他元数据信息都是不可更改的,包括数据库名和数据库所在的目录位置
在hive中使用"desc database extended hive_db"可以查看附加的属性
5.删除数据库
5.1 删除空数据库
drop database hive_db;
5.2 删除前首先判断是否存在
drop database if exists hive_db;
5.3 对于数据库不为空可以强制删除
drop database hive_db cascade;
6.创建表(MANAGED_TABLE)
6.1 建表语法
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTERED BY (col_name, col_name, ...)
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path]
6.2 普通创建表
create table if not exists student2(
id int,
name string
)
row format delimited fields terminsted by '\t'
stored as textfile
location '/user/hive/warehouse/student2';
6.3 将查询结果添加到新创建的表中
create table if not exists student3 as select id,name from studentt;
6.4 根据已存在表的表结构创建表
create table if not exists student4 like student;
7.修改表
7.1 重命名表
alter table student_name rename to new_student_name;
7.2 添加列
alter table student_name add columns(address string);
注:ADD是代表新增一字段,字段位置在所有列后面(partition列前)。
7.3 更新列
alter table student_name change column id moban_id string;
7.4 替换列
alter table student_name replace columns(name string, home string, loc string);
注:REPLACE则是表示替换表中所有字段,partition列没有被替换。
create table stu_log(
sid int,
sname string
)
partitioned by (month string)
row format delimited fields terminated by '\t';
9.2 加载数据到分区表
load data local inpath '/root/hivedata/student.txt'
into table default.stu_log partition(month='201908');
9.3 添加分区
alter table stu_log add partition(month="202001");
同时添加多个分区,使用"空格"隔开
alter table stu_log add partition(month="202002") partition(month="202003");
9.4 删除分区
alter table stu_log drop partition(month='202001');
同时删除多个分区,使用"逗号"隔开
alter table stu_log drop partition(month='202002') partition(month='202003');
9.二级分区表(二级目录)
9.5 创建二级分区
create table stu_log2(
sid int,sname string)
partitioned by (month string, day string)
row format delimited fields terminated by '\t';
9.6 加载数据到二级分区表
load data local inpath '/root/hivedata/student.txt'
into table stu_log2 partition(month='203001',day='22');
9.7 查看分区表有多少分区
show partitions stu_log;
10.查询分区表
10.1 单分区查询
select * from stu_log
10.2 多分区联合查询
select * from stu_log where month='202001' or where month='202002';
或者
select * from stu_log where month='001'
union
select * from stu_log where month='002';
10.3 将查询结果添加到新创建的表中
create table if not exists student3 as select id,name from studentt;