1.利用中间表,先将double强转为string(会出现科学计数法)
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table --注意是覆盖写
目标表 PARTITION (dt)
select
cast(
(concat('0.',repeat('0',cast(regexp_extract(字段名,'(E)(-)([0-9]+)',3) as int)-1),regexp_replace(regexp_extract(字段名,'(.+)(E)',1),'\.',''))
)as string)as 字段名,
dt
from 中间表 ;
3.注意利用create创建的中间表没有分区,会报错dt=null
4.如果是分区表则需要在insert前加上
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
版权归原作者 慎独# 所有, 如有侵权,请联系我们删除。