Hive 是基于 Hadoop 的数据仓库不支持传统数据库的行级事务标准 Hive核心用于离线数据分析。Hive 对数据库Database的操作只有CREATE增、DROP删、ALTER改没有 UPDATE 数据库的概念对表数据Hive 2.0 支持事务表的 INSERT/UPDATE/DELETE非事务表仅支持追加写入。一、数据库操作增 / 删 / 改1. 创建数据库CREATEsql-- 基础创建 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 (creatoradmin, date2025-01-01); -- 自定义属性2. 删除数据库DROPsql-- 空数据库删除 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 (owneruser01);4. 查看数据库sql-- 查看所有数据库 SHOW DATABASES; -- 查看数据库详情 DESC DATABASE my_db; DESC DATABASE EXTENDED my_db; -- 查看详细信息二、表数据操作增 / 删 / 改前提说明普通表仅支持INSERT追加数据不支持 UPDATE/DELETE事务表Hive 2.0 开启事务后支持UPDATE/DELETE1. 插入数据增 INSERTsql-- 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张三三, age25 WHERE id1;3. 删除数据删 DELETE必须是事务表sql-- 删除指定条件数据 DELETE FROM my_table WHERE id1; -- 清空全表等价于truncate DELETE FROM my_table;三、Hive 事务表开启必须配置如果需要使用UPDATE/DELETE必须在 Hive 客户端执行以下配置sqlSET 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 存储 事务属性sqlCREATE TABLE my_table ( id INT, name STRING ) CLUSTERED BY (id) INTO 1 BUCKETS -- 分桶 STORED AS ORC -- ORC格式 TBLPROPERTIES (transactionaltrue); -- 开启事务总结数据库操作CREATE创建、DROP删除、ALTER修改属性数据插入INSERT INTO/OVERWRITE所有表都支持数据更新 / 删除仅事务表支持UPDATE/DELETE普通表不支持核心特点Hive 主打离线分析不适合高频增删改业务场景
Hive 数据库 增删改 完整操作指南
Hive 是基于 Hadoop 的数据仓库不支持传统数据库的行级事务标准 Hive核心用于离线数据分析。Hive 对数据库Database的操作只有CREATE增、DROP删、ALTER改没有 UPDATE 数据库的概念对表数据Hive 2.0 支持事务表的 INSERT/UPDATE/DELETE非事务表仅支持追加写入。一、数据库操作增 / 删 / 改1. 创建数据库CREATEsql-- 基础创建 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 (creatoradmin, date2025-01-01); -- 自定义属性2. 删除数据库DROPsql-- 空数据库删除 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 (owneruser01);4. 查看数据库sql-- 查看所有数据库 SHOW DATABASES; -- 查看数据库详情 DESC DATABASE my_db; DESC DATABASE EXTENDED my_db; -- 查看详细信息二、表数据操作增 / 删 / 改前提说明普通表仅支持INSERT追加数据不支持 UPDATE/DELETE事务表Hive 2.0 开启事务后支持UPDATE/DELETE1. 插入数据增 INSERTsql-- 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张三三, age25 WHERE id1;3. 删除数据删 DELETE必须是事务表sql-- 删除指定条件数据 DELETE FROM my_table WHERE id1; -- 清空全表等价于truncate DELETE FROM my_table;三、Hive 事务表开启必须配置如果需要使用UPDATE/DELETE必须在 Hive 客户端执行以下配置sqlSET 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 存储 事务属性sqlCREATE TABLE my_table ( id INT, name STRING ) CLUSTERED BY (id) INTO 1 BUCKETS -- 分桶 STORED AS ORC -- ORC格式 TBLPROPERTIES (transactionaltrue); -- 开启事务总结数据库操作CREATE创建、DROP删除、ALTER修改属性数据插入INSERT INTO/OVERWRITE所有表都支持数据更新 / 删除仅事务表支持UPDATE/DELETE普通表不支持核心特点Hive 主打离线分析不适合高频增删改业务场景