Hive中的DML操作

文章目录

  • Hive中的DML操作
    • 一、Load
      • 1)语法
      • 2)实操案例
        • (0)创建一张表
        • (1)加载本地文件到hive
        • (2)加载HDFS文件到hive中
    • 二、Insert
      • 1. 将查询结果插入表中
        • 1)语法
        • 2)案例
      • 2. 将给定Values插入表中
      • 3. 将查询结果写入目标路径
        • 1)语法
        • 2)案例
    • 三、Export&Import

Hive中的DML操作_第1张图片

Hive中的DML操作

DML是Data Manipulation Language的缩写,意思是数据操纵语言,是指在SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除,是开发以数据为中心的应用程序必定会使用到的指令。

由于hive它主要用来进行海量数据的提取、转化、加载,,所以在Hive中的UPDATE、DELETE相关操作使用的场景比较少。

一、Load

Load语句可将文件导入到Hive表中。

1)语法

LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)];

关键字说明:

(1)local:表示从本地加载数据到Hive表;否则从HDFS加载数据到Hive表。

(2)overwrite:表示覆盖表中已有数据,否则表示追加。

(3)partition:表示上传到指定分区,若目标是分区表,需指定分区。

2)实操案例

(0)创建一张表

drop table if exists student;
create table student(
    id int, 
    name string
) 
row format delimited fields terminated by '\t';

Hive中的DML操作_第2张图片

(1)加载本地文件到hive

load data local inpath '/opt/module/datas/student.txt' into table student;

查看数据:

Hive中的DML操作_第3张图片

(2)加载HDFS文件到hive中

①上传文件到HDFS

hadoop fs -put /opt/module/datas/student.txt /user/root

②加载HDFS上数据,导入完成后去HDFS上查看文件是否还存在

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

image-20230608114759458

查看数据文件/user/root/student.txt,发现文件不在了。

数据追加写入:

select * from student;

Hive中的DML操作_第4张图片

(3)加载数据覆盖表中已有的数据

①上传文件到HDFS

hadoop fs -put /opt/module/datas/student.txt /user/root

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

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

Hive中的DML操作_第5张图片

二、Insert

1. 将查询结果插入表中

1)语法

INSERT (INTO | OVERWRITE) TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement;

关键字说明:

(1)INTO:将结果追加到目标表

(2)OVERWRITE:用结果覆盖原有数据

(3)PARTITION:分区

2)案例

(1)新建一张表

create table student1(
    id int,
    name string
)
row format delimited fields terminated by '\t';

Hive中的DML操作_第6张图片

(2)根据查询结果插入数据

insert overwrite table student1
select id,
       name
from student;

Hive中的DML操作_第7张图片

查看数据:

Hive中的DML操作_第8张图片

2. 将给定Values插入表中

1)语法

INSERT (INTO | OVERWRITE) TABLE tablename [PARTITION (partcol1[=val1], partcol2[=val2] ...)] VALUES values_row [, values_row ...]

2)案例

insert into table  student1 values(1,'wangwu'),(2,'zhaoliu');

Hive中的DML操作_第9张图片

查看数据:

Hive中的DML操作_第10张图片

3. 将查询结果写入目标路径

1)语法

INSERT OVERWRITE [LOCAL] DIRECTORY directory
  [ROW FORMAT row_format] [STORED AS file_format] select_statement;

2)案例

insert overwrite local directory '/opt/module/datas/student' ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.JsonSerDe'
select id,name from student;

Hive中的DML操作_第11张图片

查看结果:

Hive中的DML操作_第12张图片

三、Export&Import

Export导出语句可将表的数据和元数据信息一并导处的HDFS路径,Import可将Export导出的内容导入Hive,表的数据和元数据信息都会恢复。Export和Import可用于两个Hive实例之间的数据迁移。

1)语法

--导出
EXPORT TABLE tablename TO 'export_target_path'

--导入
IMPORT [EXTERNAL] TABLE new_or_original_tablename FROM 'source_path' [LOCATION 'import_target_path']

2)案例

--导出
export table db_hive1.student to '/user/hive/warehouse/export/student';

--导入
import table student2 from '/user/hive/warehouse/export/student'

数据导出:

image-20230608142310578

查看:

Hive中的DML操作_第13张图片

数据导入:

Hive中的DML操作_第14张图片

查看数据:

Hive中的DML操作_第15张图片

参考文章:

1.dml是什么(dml是什么意思) https://www.chx-zs.com/baike/298315.html
2.尚硅谷大数据Hive 3.x教程全新升级版(基于hive3.1.3)p28-p30

你可能感兴趣的:(Hive数据仓库,hive,hadoop,大数据)