1、对数据库的操作
create database hive_db; -- 创建数据库hive_db
create table hive_db.test; -- 在数据库hive_db中创建test表(字段内容及其格式省略)
-- 创建数据库student_db,但是在hdfs中显示student.db,在hive控制端中显示studentdb(在有location的情况下)
create database student_db location '/user/hive/student.db';
create database if not exists hive_db; -- 创建时判断是否存在
create database teacherdb comment "数据库teacherdb的备注"; -- 创建并且添加库备注
show databases like 'hive*'; -- 结果为hive_db
describe database hive_db; -- 显示数据库的信息
truncate table d_trzd; --清空表数据
drop database hive_db; -- 这种方式只能删除空数据库
drop database studentdb cascade; -- 强制删除非空数据库
2、对表的操作
create table if not exists hive_db.t1(字段); -- 在数据库hive_db中创建表t1
-- 在数据库hive_db中创建表t1并且指定分隔符\t
create external table hive_db.t1(字段) row format delimited fields terminated by '\t';
show tables in hive_db like "t*"; -- 在数据库hive_db中寻找以t开头的表。
create table student1 as select * from stu; -- 复制表及其数据
describe extended records; -- 查看表信息
describe formatted records; -- 查看表详细信息
-- 修改分隔符为制表符\t
ALTER TABLE table_name SET SERDEPROPERTIES ('field.delim' = '\t' , 'serialization.format'='\t');
2.1、内部表与外部表的相互转换:
alter table student set tblproperties("EXTERNAL"="TRUE"); -- 内部表转换为外部表
alter table student set tblproperties("EXTERNAL"="FALSE"); -- 外部表转换为内部表
2.2、分区表(分区在hdfs上其实是目录,分区名不是表结构中的字段名而是在创建表和分区时另外加的):
create table stu_partition(id int,name string);
partitioned by (month string);
row format delimited fields terminated by '\t';
-- 此表名为stu_partition按照月份来分区。
-- 上传数据到分区表:
load data local inpath '/home/hdc/Document/student1.txt' into table stu_partition partition(month="202006");
-- 分区表查找:
select * from stu_partition; -- 查找分区表中的所有记录;
select * from stu_partition where month="202006"; -- 查找分区表中分区名202006中的所有记录
-- 查看分区:
show partitions stu_partition;
-- 增加分区:
alter table stu_partition add partition (month="202008");
alter table stu_partition add partition (month="202009") partition (month="202010");
-- 删除分区:
alter table stu_partition drop partition(month="202008");
alter table stu_partition drop partition(month="202009"),partition (month="202010");
注释:二级分区指的是2个分区字段,按照字段的顺序来设置分区顺序,例如:partition(month="202009",day="01")就是一个二级分区,其目录结构是day文件夹是month文件夹的子文件夹。