Sql into配置单元表-非分区表到具有多个分区的分区表-无法插入目标表,因为列数/类型
当我试图插入一个分区表时,出现以下错误: SemanticException[错误10044]:第1:23行无法插入目标表,因为列数/类型不同:table insclause-0有6列,3列已分区,我们不需要从非分区表转储/存储到分区表的任何筛选器 我的桌子: 资料来源:Sql into配置单元表-非分区表到具有多个分区的分区表-无法插入目标表,因为列数/类型,sql,hive,hiveql,hive-partitions,Sql,Hive,Hiveql,Hive Partitions,当我试图插入一个分区表时,出现以下错误: SemanticException[错误10044]:第1:23行无法插入目标表,因为列数/类型不同:table insclause-0有6列,3列已分区,我们不需要从非分区表转储/存储到分区表的任何筛选器 我的桌子: 资料来源: id name salary dep 1 sai 1000 sales 2 syam 2000 hr 3 sundar 3000 bank 目标: id name salary dep 1
id name salary dep
1 sai 1000 sales
2 syam 2000 hr
3 sundar 3000 bank
目标:
id name salary dep
1 sai 1000 sales
2 syam 2000 hr
3 sundar 3000 bank
分区(名称字符串、dep字符串)
请告诉我如何从源复制到目标
在下面尝试
insert into target_partitioned_table partition(name,dep) select id from source_table;
您应该列出select中的所有列,分区列应该是最后一列,并且顺序相同。列的顺序很重要 检查表DDL。如果按名称和Dep进行分区,则分区列应为最后一列:
id、salary、Name、Dep
。如果列的顺序与问题中的顺序相同,则表看起来不像是按(Name,Dep)分区的,或者文件或数据示例中的列顺序错误。按描述命令返回的相同顺序插入列
查询应以完全相同的顺序包含所有列
对于静态分区加载,您不需要选择中的分区列,分区规范中的值是静态的:
insert into table target_partitioned_table partition(name='Some Name',dep='Sales')
select id, salary from source_table;
对于动态分区加载(分区取自数据集,并且应以相同的顺序在select中):
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert into table target_partitioned_table partition(name,dep)
select id, salary, name, dep from source_table;