三、Hive之DML 数据操作

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 命令导出到本地

三、Hive之DML 数据操作

3.2.3 Hive Shell 命令导出

基本语法:(hive -f/-e 执行语句或者脚本 > file)
三、Hive之DML 数据操作

3.2.4 Export 导出到 HDFS 上

三、Hive之DML 数据操作
export 和 import 主要用于两个 Hadoop 平台集群之间 Hive 表迁移。

3.2.5 清除表中数据(Truncate)

注意:Truncate 只能删除管理表,不能删除外部表中数据

   truncate table student;
上一篇:MySQL中SQL语句——DML(数据操作语言)和DDL(数据定义语言)


下一篇:《DML操作以及数据查询》