3.1数据导入
3.1.1 向表中装载数据(Load)
(1)语法
load data [local] inpath ‘数据的 path’ [overwrite] into table
student [partition (partcol1=val1,…)];
load data:表示加载数据
local:表示从本地加载数据到 hive 表;否则从 HDFS 加载数据到 hive 表
inpath:表示加载数据的路径
overwrite:表示覆盖表中已有数据,否则表示追加
into table:表示加载到哪张表
student:表示具体的表
partition:表示上传到指定分区
(2)案例
1).创建一张表
create table student_xjl(id string,name string)
row format delimited fields terminated by '\t';
2).加载本地文件到 hive
load data local inpath
'/opt/module/hive/datas/student.txt' into table default.student;
3).加载 HDFS 文件到 hive 中
上传文件到 HDFS
dfs -put /opt/module/hive/data/student.txt
/user/atguigu/hive;
加载 HDFS 上数据
load data inpath '/user/atguigu/hive/student.txt' into
table default.student;
3).加载数据覆盖表中已有的数据
上传文件到 HDFS
dfs -put /opt/module/data/student.txt /user/atguigu/hive;
加载数据覆盖表中已有的数据
load data inpath '/user/atguigu/hive/student.txt'
overwrite into table default.student;
3.1.2 通过查询语句向表中插入数据(Insert)
(1)创建一张表
create table student_xjl(id int, name string)
row format delimited fields terminated by '\t'
(2)插入基本数据
insert into table student_xjl
values (1,'zhangsan'),(2,'lisi'),(3,'wangwu');
insert into:以追加数据的方式插入到表或分区,原有数据不会删除
insert overwrite:会覆盖表中已存在的数据
注意:insert 不支持插入部分字段
3.1.3查询语句中创建表并加载数据(As Select)
根据查询结果创建表(查询的结果会添加到新创建的表中)
create table if not exists student1_xjl
as select id,name from student_xjl;
3.1.4 创建表时通过 Location 指定加载数据路径
(1)上传数据到hdfs上
hive (default)> dfs -mkdir /student;
hive (default)> dfs -put /opt/module/datas/student.txt /student;
(2)创建表,并指定在hdfs上的位置
create external table if not exists student5(
id int, name string)
row format delimited fields terminated by '\t'
location '/student;
(3)查询数据
hive (default)> select * from student5;
3.1.5 Import 数据到指定 Hive 表中
注意:先用 export 导出后,再将数据导入。
import table student2
from '/user/hive/warehouse/export/student';
3.2 数据导出
3.2.1 Insert 导出
(1)将查询的结果导出到本地
insert overwrite local directory
'/opt/module/hive/data/export/student'
select * from student;
(2)将查询的结果格式化导出到本地
insert overwrite local directory
'/opt/module/hive/data/export/student1'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
select * from student;
(3)将查询的结果导出到 HDFS 上(没有 local)
insert overwrite directory
'/opt/module/hive/data/export/student1'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
select * from student;
3.2.2 Hadoop 命令导出到本地
3.2.3 Hive Shell 命令导出
基本语法:(hive -f/-e 执行语句或者脚本 > file)
3.2.4 Export 导出到 HDFS 上
export 和 import 主要用于两个 Hadoop 平台集群之间 Hive 表迁移。
3.2.5 清除表中数据(Truncate)
注意:Truncate 只能删除管理表,不能删除外部表中数据
truncate table student;