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 主打离线分析,不适合高频增删改业务场景
相关推荐
kobe_OKOK_1 天前
django外键字段会自动在数据库字段后面加上_id
数据库·django·sqlite
<小智>1 天前
及时做APP开发实战(十二)-LazyForEach懒加载优化实践
数据库·鸿蒙
龙仔7251 天前
人大金仓KingbaseES V8 手动单库备份&恢复操作笔记
数据库·笔记·oracle·人大金仓
夏贰四1 天前
数据库迁移怎样降低人力投入?数据库迁移怎么实现全量增量同步?
数据库·数据库迁移
汇智信科1 天前
图谱、向量、关键词、SQL多路一体,FastKG垂域召回率100%拉满
网络·数据库·ai编程·汇智信科·hsim·fastclaw·汇智龙虾
笨蛋不要掉眼泪1 天前
MySQL架构揭秘:慢查询日志详解
数据库·mysql·架构
pulinzt1 天前
Tableau的基础使用
数据库·numpy
糖果店的幽灵1 天前
【langgraph 从入门到精通graphApi 篇】LangGraphAPI 方式调用 - 初识与核心概念
数据库·人工智能·langgraph
TlSfoward1 天前
TLSFOWARD TLS指纹
开发语言·数据库·爬虫·搜索引擎·https·php
️学习的小王2 天前
MySQL 实战:从建表到索引管理的完整指南
数据库·mysql·oracle