1. 库操作
- 创建数据库
//默认路径下创建数据库
create database stu
//指定路径下创建数据库
create database stu2 location '/stu2';
//如果已经存在,可以用这个语句,不会报错中止
create database if not exists stu
- 查看数据库
show databases
//制定查询条件
show databases like 'stu*'
//显示数据库信息
desc database stu
- 修改数据库属性
alter database stu set dbproperties('createtime'='20170830');
- 删除数据库
//删除空数据库
drop database stu
//删除非空数据库
drop database stu cascade
2.表操作
- 新增表
//创建内部表
create table empPartition(
name string,
address array<string>, //列表类型
personnalInfo array<string>, //列表类型
technol map<string,int>, //map类型
jobs map<string,string> //map类型
)
partitioned by (Year string,month string ) //定义分区
row format delimited
fields terminated by '|' //所有字段按照|分割
collection items terminated by ',' //列表字段按照,分割
map keys terminated by ':' //map字段按照:分割
lines terminated by '\n'; //每一行记录按照\n分割
//创建外部表目录
hdfs dfs -mkdir -p /usr/outTable/emp
//创建外部表
create external table emp_id(
name string,
empid int,
address array<string>,
empInfo struct<sex:string,age:int>,
score map<string,int>,
jobs map<string,string>)
row format delimited
fields terminated by '|'
collection items terminated by ','
map keys terminated by ':'
lines terminated by '\n'
stored as textfile
location '/usr/outTable/emp';
外部表和内部表最大的一个区别是,内部表在删除表的时候,数据会一起被删除,它存储在所属数据库子目录下;
外部表再删除表的时候数据不会被删除,所以外部表更加安全,在工作中也更加常用,存储在指定的HDFS路径中。
- 插入数据
insert into table_name1 select * from table_name2;
insert into table_name values("","","");
insert into table_name values(1,'sam'),(2,'marry');
insert overwrite table_name1 select * from table_name2;
//HDFS加载文件:除了从本地加载文件外,我们也可以从hdfs上加载文件进行分区
load data inpath '/opt/hive/warehouse/hivetest.db/employee/employee.txt'
into table empPartition
partition (Year='2021',month='9');
- 查询表
select name,id,address[0],empInfo.sex,score["Sales"] from empid;
//其中address是个列表、empInfo和score是个map
- 修改表
//修改表名
alter table table_name rename to new_table_name
//新增分区
ALTER TABLE table_name if not exists add partition (partName='xxx');
ALTER TABLE table_name add partition(Year='2019',month='5');
//删除分区
ALTER TABLE table_name DROP IF EXISTS PARTITION (partName='xxx');
//新增和修改表字段
alter table table_name add|replace columns (col_name string,num int)
alter table table_name change col_name info struct<sex:string,age:string>;
- 删除表
//删除数据保留表定义:
TRUNCATE TABLE target
//删除数据和元数据以及表定义:
DROP TABLE target
语法可以参考:文章来源:https://www.toymoban.com/news/detail-516508.html
Hive常用函数大全一览 – 过往记忆文章来源地址https://www.toymoban.com/news/detail-516508.html
到了这里,关于Hive基本操作-增删改查和修改库表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!