Hive DML 语言学习笔记:数据加载、插入、导出与导入

本文基于 Hive 官方 DML 文档整理,涵盖数据加载、插入、写入文件系统以及导入导出等常用操作。 官方文档:Apache Hive : LanguageManual DML


一、Hive 数据操作语言

1. 将文件加载到表中(常用)

语法:

复制代码
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] [INPUTFORMAT 'inputformat' SERDE 'serde'] (3.0 or later)

说明:

  • LOCAL:从本地文件系统加载数据。

  • 不带 LOCAL:从 HDFS 加载数据,类似于 mv 操作。

  • OVERWRITE:覆盖表中已有数据。

  • INTO TABLE:指定目标表。

  • PARTITION:可选,指定分区。 案例:

    -- 创建表
    CREATE TABLE IF NOT EXISTS bigdata.students1(
    id STRING COMMENT '学号',
    name STRING COMMENT '姓名',
    age INT COMMENT '年龄',
    sex STRING COMMENT '性别',
    clazz STRING COMMENT '班级'
    )
    ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
    CREATE TABLE IF NOT EXISTS bigdata.students2 LIKE students1;
    -- 加载本地数据到 Hive 表中
    LOAD DATA LOCAL INPATH '/root/sh_code/student.csv' OVERWRITE INTO TABLE students1;
    -- 加载 HDFS 上的数据到 Hive 表,类似于 mv
    LOAD DATA INPATH '/student.csv' OVERWRITE INTO TABLE students2;


2. 将查询数据插入 Hive 表

语法:

复制代码
INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] select_statement1 FROM from_statement;
INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;

说明:

  • INSERT OVERWRITE:覆盖目标表中已有数据。

  • INSERT INTO:向目标表中追加数据。 案例:

    INSERT INTO TABLE students5 SELECT * FROM students1;
    INSERT OVERWRITE TABLE students5 SELECT * FROM students1;


3. 通过 SQL 将值插入到表中

语法:

复制代码
INSERT INTO TABLE tablename [PARTITION (partcol1[=val1], partcol2[=val2] ...)] VALUES values_row [, values_row ...]

案例:

复制代码
INSERT INTO TABLE students5 VALUES('100001','张三',25,'1','文科一班');

4. 根据查询结果将数据写入文件系统

语法:

复制代码
INSERT OVERWRITE [LOCAL] DIRECTORY directory1
  [ROW FORMAT row_format] [STORED AS file_format] (Note: Only available starting with Hive 0.11.0)
  SELECT ... FROM ...
Hive extension (multiple inserts):
FROM from_statement
INSERT OVERWRITE [LOCAL] DIRECTORY directory1 select_statement1
[INSERT OVERWRITE [LOCAL] DIRECTORY directory2 select_statement2] ...

row_format 语法:

复制代码
row_format
  : DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
        [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
        [NULL DEFINED AS char] (Note: Only available starting with Hive 0.13)

案例:

复制代码
INSERT OVERWRITE LOCAL DIRECTORY '/root/students5'
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
SELECT * FROM students5;

5. 导入导出

(1)导出语法
复制代码
EXPORT TABLE tablename [PARTITION (part_column="value"[, ...])]
  TO 'export_target_path' [ FOR replication('eventid') ]

案例:

复制代码
EXPORT TABLE students5 TO '/students5';
(2)导入语法
复制代码
IMPORT [[EXTERNAL] TABLE new_or_original_tablename [PARTITION (part_column="value"[, ...])]]
  FROM 'source_path'
  [LOCATION 'import_target_path']

案例:

复制代码
-- 清空表
TRUNCATE TABLE students1;
-- 导入数据
IMPORT TABLE students1 FROM '/students5';

二、总结

本文整理了 Hive DML 中常用的数据操作,包括:

  • 使用 LOAD DATA 从本地或 HDFS 加载数据到表中;
  • 使用 INSERT INTO / INSERT OVERWRITE 插入查询结果;
  • 使用 INSERT INTO ... VALUES 直接插入值;
  • 使用 INSERT OVERWRITE DIRECTORY 将查询结果写入文件系统;
  • 使用 EXPORT / IMPORT 进行表级数据的导出与迁移。 掌握这些 DML 语句后,就可以在 Hive 中灵活地完成数据的加载、插入、导出和迁移。

参考链接: Apache Hive : LanguageManual DML

相关推荐
摇滚侠39 分钟前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
小向是个Der1 小时前
嵌入式进阶——MCU上电后的动作
c语言·单片机·mcu·学习·链接脚本
川石课堂软件测试1 小时前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
silvamux_3 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
蒸蒸yyyyzwd4 小时前
kafka、redis、mysql不熟悉问题总结
笔记·八股
hgy89694 小时前
深度学习(小白笔记)——迁徙
人工智能·笔记·深度学习
摇滚侠4 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 11
java·笔记·python
辣知5 小时前
辣知·化智93 被历史尘封的鬻子
学习
每天题库7 小时前
西藏安全员 A 证备考真题题库 强化重点知识刷题提升通过率
学习·安全·考试·题库·考证
Be for thing7 小时前
PyTorch基础|Tensor张量详解,张量创建、数据类型与常用操作
pytorch·学习·1024程序员节