Hive基础(DML 数据操作)

数据导入

向表中装载数据(Load)

load data [local] inpath '数据的 path' [overwrite] into table student [partition (partcol1=val1,)];
  1. load data:表示加载数据
  2. local:表示从本地加载数据到 hive 表;否则从 HDFS 加载数据到 hive 表
  3. inpath:表示加载数据的路径
  4. overwrite:表示覆盖表中已有数据,否则表示追加
  5. into table:表示加载到哪张表
  6. student:表示具体的表
  7. partition:表示上传到指定分区

实操案例

  1. 创建一张表
create table student(id string,name string) row format delimited fields terminated by '\t';

Hive基础(DML 数据操作)_第1张图片

在目录下新建一个 student.txt 的文件
里面内容如下:

Hive基础(DML 数据操作)_第2张图片

加载本地文件到 hive

load data local inpath '/root/student.txt' into table student;

Hive基础(DML 数据操作)_第3张图片

加载 HDFS 文件到 hive 中

上传文件到 HDFS

dfs -put /root/student.txt /user/root/hive;

在这里插入图片描述

Hive基础(DML 数据操作)_第4张图片

加载 HDFS 上数据

load data inpath '/user/root/hive' into table student;

Hive基础(DML 数据操作)_第5张图片

加载数据覆盖表中已有的数据

  1. 上传文件到 HDFS
dfs -put '/root/student.txt' '/user/root/hive';

在这里插入图片描述

  1. 加载数据覆盖表中已有的数据
load data inpath '/user/root/hive' overwrite into table student;

Hive基础(DML 数据操作)_第6张图片

通过查询语句向表中插入数据(Insert)

  • 创建一张表
create table student_par(id int,name string) row format delimited fields terminated by '\t';

在这里插入图片描述

  • 基本插入数据
insert into student_par values(1,'wangwu'),(2,'zhaoliu');

Hive基础(DML 数据操作)_第7张图片
Hive基础(DML 数据操作)_第8张图片

  • 基本模式插入(根据单张表查询结果)
insert overwrite table student_par select id,name from student;

Hive基础(DML 数据操作)_第9张图片
Hive基础(DML 数据操作)_第10张图片

insert into:以追加数据的方式插入到表或分区,原有数据不会删除 insert overwrite:会覆盖表中已存在的数据
注意:insert 不支持插入部分字段

查询语句中创建表并加载数据(As Select)

  • 根据查询结果创建表(查询的结果会添加到新创建的表中)
create table if not exists student3 as select id,name from student;

Hive基础(DML 数据操作)_第11张图片
Hive基础(DML 数据操作)_第12张图片

创建表时通过 Location 指定加载数据路径

  1. 上传数据到 hdfs 上
dfs -mkdir /student;
dfs -put /root/student.txt /student;

Hive基础(DML 数据操作)_第13张图片
Hive基础(DML 数据操作)_第14张图片

  1. 创建表,并指定在 hdfs 上的位置
 create external table if not exists student5(id int,name string) row format delimited fields terminated by '\t' location '/student';

Hive基础(DML 数据操作)_第15张图片

数据导出

Insert 导出

将查询的结果导出到本地

insert overwrite local directory '/root/hivedata' select * from student;

Hive基础(DML 数据操作)_第16张图片
Hive基础(DML 数据操作)_第17张图片

将查询的结果导出到 HDFS 上(没有 local)

insert overwrite directory '/root/hivedata' select * from student;

Hive基础(DML 数据操作)_第18张图片

Hadoop 命令导出到本地

dfs -get /user/hive/warehouse/dome1.db/student3 /root/hivedata;

在这里插入图片描述
Hive基础(DML 数据操作)_第19张图片
Hive基础(DML 数据操作)_第20张图片

你可能感兴趣的:(大数据学习,hive,大数据,hadoop)