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 主打离线分析,不适合高频增删改业务场景
相关推荐
znnnk11 小时前
数据库被AI“重写”:2026,从CPU中心走向GPU中心
数据库·人工智能·oracle
微微%11 小时前
mysql的安装和使用
数据库·mysql·mysql8安装
软件派12 小时前
MiniMax M3.1 Flash 高频业务落地实战指南
大数据·数据库·人工智能
云边云科技_云网融合13 小时前
连锁门店组网怎么做?SD-WAN 多分支组网的架构选型、部署与成本结构
服务器·数据库·php
泡海椒13 小时前
# 深度解析JQuick-SQL Join重排序与哈希连接执行机制
数据库·sql·哈希算法
acrel714 小时前
医院用电隐患治理与节能降耗及智慧能源平台应用
网络·数据库
snow@li14 小时前
PowerDesigner 全景教程:从业务建模、表结构设计、关系管理到正向/逆向、文档输出
数据库
ss27314 小时前
PostgreSQL表级锁、行级锁、轻量级锁
数据库·postgresql·区块链
RacentCLM14 小时前
证书即服务CaaS:从申请、续期到部署的自动化链路拆解
运维·数据库·自动化·ssl
SelectDB15 小时前
安全评审卡了三周,我把部署形态的四种选项重新排了一遍
大数据·数据库·云原生