问题描述

今天同事让我把订单表新增一个字段,我新增好字段后,重跑脚本,验证数据的时候发现新增加的那个字段的值都是NULL。脚本通过insert overwrite覆盖T+1的历史数据。

新增字段的sql是这样的

altertable app.app_tar_order_dt addcolumns(brand_name stringCOMMENT'品牌名称');

解决方案

(1)将新增字段的sql改成如下所示,然后执行insert overwrite,再查询发现新增字段有数据了。

altertable app.app_tar_order_dt addcolumns(brand_name stringCOMMENT'品牌名称') cascade;

(2)通过对分区添加字段的方式,将新增字段的sql改成这样如下所示:

altertable app.app_tar_order_dt partition(dt='2020-09-10') add columns(brand_name stringCOMMENT'品牌名称');

(3)可以先将分区删除,然后重新insert overwrite,这样新的字段也会有值。

altertable app.app_tar_order_dt droppartition(dt='2020-09-10');

官方文档描述如下

The CASCADE|RESTRICT clause is available in Hive 1.1.0. ALTER TABLE ADD|REPLACE COLUMNS with CASCADE command changes the columns of a table's metadata, and cascades the same change to all the partition metadata. RESTRICT is the default, limiting column changes only to table metadata.

简单解释下,在Hive 1.1.0版本中可以使用CASCADE和RESTRICT语法,默认情况下是RESTRICT语法,RESTRICT语法只能更新表的元数据;而使用CASCADE语法的命令能同时更新表和分区元数据。

注意:默认的RESTRICT语法对新分区没有影响,新增字段之后,如果是生成新的分区,新增字段会有值,Hive会自动维护新分区中的元数据。

hive3新增資料_Hive表新增字段后,新字段无法写入值问题总结相关推荐

  1. hive 修改表名_hive表新增字段或者修改字段

    1. hive表操作 1. 修改表字段的数据类型或者修改表字段名字 #如果表是外部表,需要先修改为内部表 alter table 数据库名.表名set tblproperties('EXTERNAL' ...

  2. ASP.NET MVC 5 - 给电影表和模型添加新字段

    在本节中,您将使用Entity Framework Code First来实现模型类上的操作.从而使得这些操作和变更,可以应用到数据库中. 默认情况下,就像您在之前的教程中所作的那样,使用 Entit ...

  3. 如何在oracle同一个用户下所有的表批量加上同一个新字段

    在项目工作中,目前遇到一个情况要给一个用户下大量表添加同一个新字段,对于新人来说比较头疼,如果进行复制粘贴,面对大量表的时候会有很大的工作量. 因此可以采用for 游标的形势来进行语句的批量执行. 首 ...

  4. WebApp匯入資料之From Excel

    1.情景 點擊"瀏覽"按鈕,尋找要上傳的Excel.按下上傳按鈕,資料寫入資料庫(database)並且顯示在畫面上. 然後,按下"保存"按鈕,Datagrid ...

  5. Mysql修改表中字段名称、字段类型

    修改字段名称: ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型; 修改字段类型: ALTER TABLE 表名 MODIFY COLUMN 字段名 新数据类型 新类型长度 ...

  6. sql数据表改为自动递增显示与其他表关联_MySQL萌新第一季 第四话-数据表的基本操作...

    本话旨在完成以下内容: 在数据库中,数据表是数据库中最重要和基本的操作对象,是数据存储的基本单位.换句话说我们操作数据库其实重要的就是操作数据表.本章将详细介绍数据表的基本操作,主要内容包括:创建数据 ...

  7. oracle发现表被锁后又没了,Oracle的表被锁后的恢复

    运行下列SQL,找出数据库的serial#,执行结果如下图所示 SELECT T2.USERNAME, T2.SID, T2.SERIAL#, T2.LOGON_TIME   FROM V$LOCKE ...

  8. oracle字段重复新增错误,Oracle 判断表或字段是否存在新增/修改表结构可重复执行sql...

    DECLARE num NUMBER; BEGIN -- 新增学生表 student SELECT COUNT (1) INTO num FROM cols WHERE table_name = UP ...

  9. SQL SERVER 新增表、新增字段、修改字段 判断表是否存在

    // 新增之前判断表是否存在IF NOT EXISTS (SELECT NAME FROM SYSOBJECTS WHERE ID = OBJECT_ID('tb_MessageHistory'))B ...

最新文章

  1. 上传图片并生成缩略图
  2. EasyUI中ToolTip提示框的简单使用
  3. HP MSA2000-硬盘leftover-trust enable处理
  4. 自建ELK迁移阿里云日志服务
  5. 机器学习-LR推导及与SVM的区别
  6. 删库跑路事件发生,SaaS云服务如何守护数据安全
  7. Excel复制粘贴——跳过空单元格案例
  8. [转载]上善若水,厚德载物
  9. 一个文科妹子的前端悲欢编程之路
  10. win10不让桌面上显示宽带连接服务器,Win10宽带连接不见了
  11. 京东Q3财报净亏损28亿元,连续亏损,徐雷会下课吗?
  12. 健身房菜鸟入门小常识
  13. Flutter Package 开发、发布、使用
  14. linux 路由器 漏洞,多个Linksys EA系列路由器信息泄露漏洞(CVE-2014-8244)
  15. android设置页面转场特效
  16. android如何获取网络的状态码,Android RxJava+Retrofit网络异常、状态码统一处理
  17. word2010添加论文引用
  18. DO280OpenShift访问控制--管理项目和账户
  19. 车载网络测试 - UDS诊断篇 - 诊断RID/IOID($2F/$31)
  20. Java 并发编程内部分享PPT分享

热门文章

  1. .idea文件夹是做什么的_推荐 33 个 IDEA 最牛配置,让你效率提高10倍!
  2. CPU飙高 解决方法
  3. android源码出现的@字符代表什么意思
  4. mysql打错了怎么办_数据库出错了怎么办?
  5. 基于JAVA+SpringBoot+Mybatis+MYSQL的后台医疗管理系统
  6. jsp显示服务器路径下的图片,jsp 从服务器获取图片路径
  7. python全栈学习--django基础入门
  8. 适配器模式真的很简单
  9. OS开发UI篇—Quartz2D使用(截屏)
  10. tcpreplay工具安装使用