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 主打离线分析,不适合高频增删改业务场景
相关推荐
Mike117.1 小时前
GBase 8c 写入高峰抖一下,我通常会先看检查点和 WAL
数据库
C137的本贾尼1 小时前
子查询与合并查询:SQL 的高级过滤技巧
数据库·sql
jingyu飞鸟2 小时前
linux系统二进制安装MySQL 8.4、8.0版本数据库,配置crontab和xtrabackup数据库热备份脚本
linux·数据库·mysql
小江的记录本2 小时前
【MySQL】《MySQL日志面试背诵版+思维导图》(核心考点 + MySQL 8.0最新优化)
java·数据库·后端·python·sql·mysql·面试
BD_Marathon2 小时前
SQL学习指南——创建和填充数据库
数据库·sql
TDengine (老段)2 小时前
TDengine RPC 通信层深度解析 — 协议格式、连接管理与重试机制
大数据·数据库·rpc·架构·时序数据库·tdengine·涛思数据
KaMeidebaby2 小时前
卡梅德生物技术快报|噬菌体筛选全流程技术方案:弧菌抑菌菌株筛选、特性鉴定与效果测试
前端·数据库·其他·百度·新浪微博
蜀道山老天师2 小时前
从零搭建 Prometheus 监控 MySQL:含二进制安装、授权、exporter 配置全流程
运维·数据库·mysql·adb·云原生·prometheus
yubin12855709232 小时前
mysql正则函数REGEXP
android·数据库·mysql