在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;

相关推荐
juniperhan8 小时前
Flink 系列第4篇:Flink 时间系统与 Timer 定时器实战精讲
java·大数据·数据仓库·flink
juniperhan11 小时前
link 系列第7篇:Flink 状态管理全解析(原理+类型+存储+实操)
大数据·数据仓库·flink
juniperhan12 小时前
Flink 系列第6篇:Watermark 水印全解析(原理+实操+避坑)
大数据·数据仓库·flink
武子康1 天前
大数据-264 实时数仓-MySQL Binlog配置详解:从原理到实践|数据恢复与主从复制实战
大数据·hadoop·后端
武子康1 天前
大数据-265 实时数仓-Canal MySQL Binlog配置详解:从原理到实践|数据恢复与主从复制实战
大数据·hadoop·后端
晓纪同学1 天前
WPF-03 第一个WPF程序
大数据·hadoop·wpf
2501_933329551 天前
技术深度剖析:Infoseek 字节探索舆情处置系统的全链路架构与核心实现
大数据·数据仓库·人工智能·自然语言处理·架构
xiaoyaohou111 天前
024、大数据技术栈概览:Hadoop、Spark与Flink
大数据·hadoop·spark
虚幻如影2 天前
Hive 中“STRING类型无需显式指定长度
数据仓库·hive·hadoop
荒川之神2 天前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle