问题:两个同样的表结构的表,如果使用insert overwrite table select *会出现以下错误。

hive>     insert overwrite table dwd.t_change  partition (dt='2021-06-10')>     select *>     from ods.t_change;
FAILED: SemanticException [Error 10044]: Line 1:27 Cannot insert into target table because column number/types are different 't_change': Table insclause-0 has 4 columns, but query has 5 columns.

仔细一看,咦,创表语句都一样,怎么会多出一行。通过hue查看表结构得知(如下图),使用select执行查询的时候是使用严谨模式,insert的时候是采用宽松模式,这就导致了如果使用select * 会导致多了一个字段。

在hive官网暂时没有提供有用的解决方案,只能把不采用select * 的方式,采用把除了dt的字段外的所有表字段一个个敲上去,如果有几百个表,一个表有几百个字段,脚本就有几万行了,显的很臃肿了。

针对这种情况,本人用过shell脚本拼接的方式,动态生成字段。
以下就是代码,原创不易,如果能帮得到您,欢迎各位同行关注。

hive -e "$(
TABLE_SCHEMA_STR=`hive -e "desc ods.${TABLE_NAME[i]}" | awk -F '\t' '{print $1," "}' | cat | xargs echo |awk -F 'dt' '{print $1}'| awk '{gsub(/^\s+|\s+$/, "");print}' `
TABLE_SCHEMA_STR=($TABLE_SCHEMA_STR)echo "insert overwrite table dwd.${TABLE_NAME[i]} partition (dt='$YESTDAY_TIME')
SELECT"for(( j=0;j<${#TABLE_SCHEMA_STR[@]};j++))doif [ $j -lt $((${#TABLE_SCHEMA_STR[@]}-1)) ]thenecho ${TABLE_SCHEMA_STR[j]},| xargs echoelseecho ${TABLE_SCHEMA_STR[j]}| xargs echofidone
echo "from ods.${TABLE_NAME[i]} where dt='$YESTDAY_TIME';"
#echo "$TABLE_SCHEMA_STR"

insert overwrite table 后面为什么不能用select *,怎么解决这个bug相关推荐

  1. insert overwrite table不会覆盖原文件,而是新增一个文件

    目录 一.背景 二.解决 一.背景 hive insert overwrite table结果发现不会覆盖原文件,而是新增一个文件 本来只有一个文件 insert overwrite table之后变 ...

  2. Hive insert overwrite

    Hive之insert into 和insert overwrite hive通常有三种方式对包含分区字段的表进行数据插入 1)静态插入数据:要求插入数据时指定与建表时相同的分区字段,如: inser ...

  3. hive insert into语句 和 insert overwrite语句

    2019独角兽企业重金招聘Python工程师标准>>> 1.insert  into 语句 hive> insert into table userinfos2 select ...

  4. 一文搞定hive之insert into 和 insert overwrite与数据分区

    版权声明:本文为博主原创文章,未经博主允许不得转载. 数据分区 数据库分区的主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间,主要包括两种分区形式:水平分区与垂直分区.水平分区是对表 ...

  5. hive分区表之insert overwrite 注意事项

    hive version 3.1.3 以往我们插入分区 需要 insert ovewrite table  p_table partition(period_id='202212') select i ...

  6. Hive 的insert into 和 insert overwrite

    转载:https://blog.csdn.net/qq_31382921/article/details/70911108 区分insert into 和 insert overowrite:  1. ...

  7. Hive insert overwrite 问题

    微信公众号:苏言论 理论联系实际,畅言技术与生活. 文章目录 1 测试的版本 2 insert overwrite使用说明 3 示例 4 建议的操作 5 参考链接 1 测试的版本 Apache hiv ...

  8. hive on spark执行insert overwrite非常慢

    把一些sql执行从hive改到spark,发现执行更慢,sql主要是一些insert overwrite操作,从执行计划看到,用到InsertIntoHiveTable spark-sql> e ...

  9. spark-sql: insert overwrite分区表问题

    1. 问题背景 用spark-sql,insert overwrite分区表时发现两个比较麻烦的问题: 从目标表select出来再insert overwrite目标表时报错:Error in que ...

最新文章

  1. BERT在小米NLP业务中的实战探索
  2. 查看git当前tag_同学,也该学着用Git了......
  3. java流的应用_Java中I/O流的应用
  4. [Windows] 一些简单的CMD命令
  5. 数据需求有多野?“三连问”帮你处理得明明白白
  6. php本地打开pdf文件_用PHP在web浏览器中打开PDF文件的方法
  7. Openstack日常运维
  8. UE4联机多人游戏基本设置
  9. ssm+jsp计算机毕业设计车辆违章查询系统2hie7(程序+LW+源码+远程部署)
  10. 消防安全-火灾报警控制器三维虚拟学习系统
  11. Java动态初始化数组,元素默认值规则
  12. 2018年9月计算机二级考试《MS Office高级应用》基础自测卷
  13. C语言实现的BP神经网络算法(1)-BPANN原理
  14. E: 仓库 没有Release 文件
  15. JS笔记 | JS中的strict model(严格模式)
  16. CSDN日报20170407 ——《嘿,程序猿,你该学点经济学了!》
  17. H.S.Teoh为D的垃集辩护.与Ola的反驳.
  18. 数字IC设计的一些英语术语总结
  19. 【MATLAB】分时段分类汇总代码
  20. 一种高精度紧耦合的双目VI-SLAM算法

热门文章

  1. 不用linux转录组数据分析,无参考基因组的转录组测序分析流程
  2. SVN误删的文件可以恢复
  3. 【排序】堆排序详解 附代码
  4. 2021SCAU数据结构复习(实验1-实验3)
  5. 视频转换横竖屏、去色,视频剪辑
  6. 鼓励与信任让人变得强大
  7. 内网穿透的作用 免费内网穿透有哪些 可以用来干什么
  8. 红图新媒体-新媒体运营从何入手呢?速点了解更多
  9. Vue $emit $refs子父组件间方法的调用
  10. Gradual Warmup Scheduler