指令目录
查看所有数据库
show databases;
查询表格内全部数据
select * from tb_baoxian2;
use进入数据库
use text
从本地中加载数据到表里
load data local inpath '文件路径' overwrite into table 加载到那个表;
hive读取本地的data文件
先从本地文件上传到hdfs中
hdfs dfs -put film_log4.txt /
load data local inpath '/home/data.txt' into table stu;
创建表格指定分割符
create table stu2(id int,name string) row format delimited fields terminated by' 分割格式';
创建表时指定换行
lines terminated by '\n'
创建表分割数据
fiellds terminatedby '分割值'
把查询的结果插入到指定表中
insert overwrite table stu3 select * from stu2;
把查询的结果插入到指定的本地下
insert overwrite local directory '/home/stu' row format delimited fields terminated by ' ' select * from stu2;
把查询的结果放到分布式目录
insert overwrite directory '/home/stu' row format delimited fields terminated by ' ' select * from stu2;
删除指定表
drop table stu1
删除数据库
drop database test;
内部表和外部表
创建一个外部表
create external table tb_baoxian1(id int,name string,type string,age int,time string,six string,number int,region string,city string) row format delimited fields terminated by ',' location '/home/baoxian/baoxian.csv';
创建一个分区表
create table book(id int,name string) partitioned by(title string) row format delimited fields terminated by ' ';
分区表后面可以跟查询条件避免全表查询
把分区设置为非严格模式
set hive.exec.dynamic.partition.mode=nonstrict;
分区加载数据
load data local inpath '/home/cn.txt' overwrite into table book partition(title='cn');
Loading data to table default.book partition (自定义字段=cn)
添加成功后数据后面会有一个字段
分区查询
查询自定义字段的数据
select * from book where title='cn';
添加多一个分区
在载入一次你要加载的数据即可
追加分区文件不覆盖之前字段内容
最大的用处是避免全表查询
load data local inpath '/home/cn.txt' into table book partition(title='cn');
Loading data to table default.book partition (自定义字段=cn)
覆盖原来表中数据插入分区
insert overwrite table tb_baoxian2 partition(yue) select *,month(time) as yue from tb_baoxian1;
保留原来表中数据插入分区
insert into table tb_baoxian2 partition(yue) select *,month(time) as yue from tb_baoxian1;
显示分区
show partitions book;
修复分区
把读取不到的分区信息导入
msck repair table book;
hive数据库信息位置和表信息位置
表存放在这边
动态分区
动态分区识别插入
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
动态分区识别年月日
select *, year(time) from tb_baoxian1 limit 5;
select *, moth(time) from tb_baoxian1 limit 5;
select *, day(time) from tb_baoxian1 limit 5;