Hive 数据库 增删改 完整操作指南

Hive 是基于 Hadoop 的数据仓库不支持传统数据库的行级事务(标准 Hive) ,核心用于离线数据分析

Hive 对数据库(Database) 的操作只有 CREATE(增)、DROP(删)、ALTER(改) ,没有 UPDATE 数据库的概念;对表数据:Hive 2.0+ 支持事务表的 INSERT/UPDATE/DELETE,非事务表仅支持追加写入。


一、数据库操作(增 / 删 / 改)

1. 创建数据库(CREATE)

sql

复制代码
-- 基础创建
CREATE DATABASE IF NOT EXISTS my_db;

-- 带注释、存储路径创建
CREATE DATABASE IF NOT EXISTS my_db
COMMENT '这是我的测试数据库'
LOCATION '/user/hive/warehouse/my_db.db'  -- 指定HDFS存储路径
WITH DBPROPERTIES ('creator'='admin', 'date'='2025-01-01');  -- 自定义属性

2. 删除数据库(DROP)

sql

复制代码
-- 空数据库删除
DROP DATABASE IF EXISTS my_db;

-- 强制删除(数据库内有表时使用)
DROP DATABASE IF EXISTS my_db CASCADE;

3. 修改数据库(ALTER)

只能修改元数据信息,不能修改数据库名和存储路径:

sql

复制代码
-- 修改数据库注释
ALTER DATABASE my_db SET DBPROPERTIES ('comment'='修改后的注释');

-- 修改数据库属性
ALTER DATABASE my_db SET DBPROPERTIES ('owner'='user01');

4. 查看数据库

sql

复制代码
-- 查看所有数据库
SHOW DATABASES;

-- 查看数据库详情
DESC DATABASE my_db;
DESC DATABASE EXTENDED my_db;  -- 查看详细信息

二、表数据操作(增 / 删 / 改)

前提说明

  1. 普通表 :仅支持 INSERT 追加数据,不支持 UPDATE/DELETE
  2. 事务表 :Hive 2.0+ 开启事务后,支持 UPDATE/DELETE

1. 插入数据(增 INSERT)

sql

复制代码
-- 1. 直接插入单条/多条数据
INSERT INTO TABLE my_table VALUES (1,'张三'), (2,'李四');

-- 2. 查询结果插入(最常用)
INSERT INTO TABLE my_table SELECT id,name FROM user_table;

-- 3. 覆盖插入(清空表后写入)
INSERT OVERWRITE TABLE my_table SELECT * FROM user_table;

2. 更新数据(改 UPDATE)

必须是事务表

sql

复制代码
-- 更新满足条件的数据
UPDATE my_table 
SET name='张三三', age=25 
WHERE id=1;

3. 删除数据(删 DELETE)

必须是事务表

sql

复制代码
-- 删除指定条件数据
DELETE FROM my_table WHERE id=1;

-- 清空全表(等价于truncate)
DELETE FROM my_table;

三、Hive 事务表开启(必须配置)

如果需要使用 UPDATE/DELETE,必须在 Hive 客户端执行以下配置:

sql

复制代码
SET hive.support.concurrency = true;
SET hive.enforce.bucketing = true;
SET hive.exec.dynamic.partition.mode = nonstrict;
SET hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
SET hive.compactor.initiator.on = true;
SET hive.compactor.worker.threads = 1;

创建事务表必须指定:分桶 + ORC 存储 + 事务属性

sql

复制代码
CREATE TABLE my_table (
    id INT,
    name STRING
)
CLUSTERED BY (id) INTO 1 BUCKETS  -- 分桶
STORED AS ORC  -- ORC格式
TBLPROPERTIES ('transactional'='true');  -- 开启事务

总结

  1. 数据库操作CREATE(创建)、DROP(删除)、ALTER(修改属性)
  2. 数据插入INSERT INTO/OVERWRITE(所有表都支持)
  3. 数据更新 / 删除 :仅事务表 支持 UPDATE/DELETE,普通表不支持
  4. 核心特点 :Hive 主打离线分析,不适合高频增删改业务场景
相关推荐
风哥2号3 小时前
数据库教程FGMT27‑MySQL数据库基础知识与体系架构
数据库·mysql
YangYang9YangYan4 小时前
2026 校招商品分析岗位 JD 拆解,核心指标、工具与面试考点
大数据·数据库·数据分析
西安栈上月明软件科技5 小时前
从业务黑话到本体图谱:OAG本体建模五步法(西安老系统AI化改造实战)
数据库·人工智能·架构
anxiao_m5 小时前
跨云跨机房大数据迁移怎么选?不同场景工具适配指南
数据库·云启快传
风哥2号7 小时前
数据库教程FGMT43‑MySQL性能分析与优化调整
数据库·mysql
随身数智备忘录8 小时前
财务数据分析如何与业务场景结合?财务数据分析如何从数出有据到数出有用?
数据库
这个DBA有点耶9 小时前
数据库教程:从零基础到实战的完整学习路径(2026版)
数据库·程序员·代码规范
forestsea9 小时前
从零构建 Java 智能体 RAG 系统:Milvus 向量数据库实战指南
java·数据库·milvus
probex_10 小时前
从 ByConity 到 VictoriaMetrics:一次指标数据迁移引发的四种存储对比
数据库
Patrick在香港10 小时前
Python 审计香港开放数据目录:两个端点差 10 倍,只有 9.3% 的资源标了「最后修改时间」
开发语言·数据库·python·数据分析·api·数据治理·开放数据