在Hive中,将数据从一个表查询并插入到另一个表

1. 确认目标表结构

确保目标表已存在且结构与查询结果匹配。若不存在,需先创建:

CREATE TABLE target_table (

id INT,

name STRING

)

PARTITIONED BY (dt STRING)

STORED AS ORC;

2. 选择插入方式

  • 覆盖插入(替换现有数据):

INSERT OVERWRITE TABLE target_table PARTITION (dt)

SELECT id, name, dt FROM source_table;

  • 追加插入(保留现有数据):

INSERT INTO TABLE target_table PARTITION (dt)

SELECT id, name, dt FROM source_table;

3. 处理动态分区

若目标表有动态分区,需启用配置:

SET hive.exec.dynamic.partition = true;

SET hive.exec.dynamic.partition.mode = nonstrict;

确保SELECT语句中分区字段(如dt)位于最后。

4. 字段映射与转换

若字段名或类型不同,需在查询时转换:

INSERT OVERWRITE TABLE target_table PARTITION (dt)

SELECT old_id AS id, old_name AS name, dt FROM source_table;

5. 执行并验证

运行插入语句后,检查数据量和分区是否正确:

SELECT COUNT(*) FROM target_table;

SHOW PARTITIONS target_table;

完整

-- 启用动态分区(如需)

SET hive.exec.dynamic.partition=true;

SET hive.exec.dynamic.partition.mode=nonstrict;

-- 覆盖插入数据

INSERT OVERWRITE TABLE target_table PARTITION (dt)

SELECT

id,

name,

dt -- 分区字段必须放在最后

FROM source_table;

相关推荐
小湘西1 小时前
数仓分层架构详解2:ODS、DWD、DWS
大数据·数据库·数据仓库
小湘西1 小时前
数仓分层架构详解:ODS、DWD、DWS
数据仓库·数据分析
鲨莎分不晴2 小时前
大数据的“数字金库”:HDFS 核心原理与操作指令全解
大数据·hadoop·hdfs
鲨莎分不晴2 小时前
给 Hadoop 插上 SQL 的翅膀:Apache Hive 架构与实战全解
hadoop·sql·apache
德彪稳坐倒骑驴2 小时前
Hive电商数据分析项目 过程记录
hive·hadoop·数据分析
红队it2 小时前
【Spark+Hadoop】基于spark+hadoop游戏评论数据分析可视化大屏(完整系统源码+数据库+开发笔记+详细部署教程+虚拟机分布式启动教程)✅
大数据·hadoop·分布式·算法·游戏·数据分析·spark
yumgpkpm2 小时前
华为 GaussDB 商业版(本地部署)部署方案及相关步骤
hive·hadoop·redis·elasticsearch·华为·kafka·gaussdb
独自归家的兔2 小时前
Ambari与Bigtop深度解析:大数据集群管理与生态标准化利器
大数据·hadoop·ambari
俊哥大数据3 小时前
【项目8】基于Hadoop+Hive+SpringBoot+Vue智慧社区大数据仓库项目
数据仓库·hive·hadoop
BOB-wangbaohai3 小时前
软考-系统架构师-数据库系统(一)
数据仓库·软考·系统架构师·数据库设计