一.引言

使用 Hive 表时由于数据的变换经常需要调整 Hive 表字段结构,这里记录一下常用方法。先创建一个测试表 tmp_change_column,包含两个字段 a,b 和分区标识 dt :

function createTable() {
hive -e "
create table if not exists tmp_change_column (
a string,
b string
)
PARTITIONED BY(dt string)
row format delimited fields terminated by '\t'
"
}
createTable

二.增加字段

1.末尾增加字段

在原始列名 a,b 基础上增加字段 c

# 增加一列
hive -e "alter table tmp_change_column add columns (c string comment '增加一列');"

2.增加到指定位置

添加新字段到指定位置需要两步,首先将字段添加至末尾,其次通过 change 方法修改其顺序,这里首先将 b_extend 添加至字段末尾,随后 change b_extend after b,则达到指定位置目的

# 增加一列
hive -e "alter table tmp_change_column add columns (b_extend string comment '指定位置');"
# 调整位置
hive -e "alter table tmp_change_column change b_extend b_extend string after b;"

三.删除字段

1.删除末尾字段

删除字段的原理是替代,用新的字段名替代原有的字段,舍弃掉最后的字段 c

# 删除一列
hive -e "alter table tmp_change_column REPLACE COLUMNS (
a string,
b string,
b_extend string);"

2.删除指定字段

其实和删除末尾字段一致,只需替换 REPLACE COLUMNS 内字段即可,现在删除字段 b

# 删除指定列
hive -e "alter table tmp_change_column REPLACE COLUMNS (
a string,
b_extend string);"

四.修改字段

1.修改字段名称

将字段 b_extend 改为字段 b

# 修改列名
hive -e "alter table tmp_change_column change b_extend b string;"

2.修改字段类型

常用的类型有 STRING,BOOLEAN,INT,FLOAT,DOUBLE,CHAR 等,把字段 b 的类型修改为 Double

# 修改类型
hive -e "alter table tmp_change_column change b b DOUBLE;"

3.修改字段注释

除了名称和类型,注释也可以相对应修改

# 修改注释
hive -e "alter table tmp_change_column change b b DOUBLE comment '修改注释';"

4.同时修改名称,类型,注释

上述操作也可以合并,一次性修改字段的多个属性

# 全部修改
hive -e "alter table tmp_change_column change b b_change STRING comment '再次修改注释'"

五.总结

Hive 表字段的相关操作大致就这些,有一点需要注意,增加字段后,Hive 表当前对应的 Location 地址并不会自动补上该数据,但此时已经可以 select 从表中获取该字段,会全部获得 Null,后续可以通过 select 操作补齐该数据,或者用新的地址 location 补齐该字段。

Hive - 增删改 Hive 表字段相关推荐

  1. python 全栈开发,Day62(外键的变种(三种关系),数据的增删改,单表查询,多表查询)...

    一.外键的变种(三种关系) 本节重点: 如何找出两张表之间的关系 表的三种关系 一.介绍 因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 二.重点理解如果找出 ...

  2. day38 mycql 初识概念,库(增删改查),表(增删改)以及表字段(增删改查),插入更新操作...

    在Navicat中把已经生成的表逆向成模型 数据库上,右键-逆向数据库到模型 ego笔记: 增删改查 文件夹(库)增create database day43 charset utf8;改alter ...

  3. sql 增删改 合表操作

    Day4 Task46 Union的用法 Union(可以将查询结果集相加) 案例:找出工作岗位是salesman和manager的员工 第一种: Select ename,job from emp ...

  4. 增删改数据库表中的字段名

    1.修改字段名: 修改字段名称用change,后边是新字段+旧字段+类型就可以了 ALTER TABLE grade CHANGE creat_date create_date date; 旧值为cr ...

  5. 跟燕十八学习PHP-第十五天-php增删改查表数据

    /** 燕十八 公益PHP培训 课堂地址:YY频道88354001 学习社区:www.zixue.it **/ <!DOCTYPE html PUBLIC "-//W3C//DTD X ...

  6. mysql-Navicat-新增或修改表字段SQL语句整理

    -- 新增-字符串参数-形式 ALTER TABLE address ADD COLUMN address_province varchar(50) CHARACTER SET utf8 COLLAT ...

  7. django,form表单,数据库增删改查

    Django 02  复习:   Django下载:    在命令行输入:     pip3 install django==1.11.11     在这里不要用最新的3.7,推荐使用3.6/3.5/ ...

  8. Oracle 创建表空间,创建表、数据增删改

    Oracle 创建表空间,创建表.数据增删改 创建表空间 创建用户 用户授权 表的创建.修改与删除 创建表 数据类型 创建表的同时指定表空间 修改表 删除表 数据增删改 插入数据 修改数据 删除数据 ...

  9. mysql表的增删改select 和 where

    创建表 create table t1(id int primary key auto_increment,username char(12) not null,sex enum('male','fe ...

最新文章

  1. JavaScript面向对象与传统面向对象的一点区别
  2. 以为是行废代码,原来有这作用!
  3. 关于python语言、下列说法不正确的是-关于Python中的字符串,下列说法错误的是()...
  4. 通过 WIFI 用 adb 调试 Android 设备
  5. python数据结构算法优势_Python数据结构与算法(一)----- 算法效率
  6. Linux进程通信的四种方式——共享内存、信号量、无名管道、消息队列|实验、代码、分析、总结
  7. Linux的应用领域
  8. java负数用什么类型定义_(转) Java中的负数及基本类型的转型详解
  9. ROS-Kinetic安装turtlebot-3并仿真
  10. C语言关键字浅析-signed
  11. 计算混响时间的意义_混响是什么意思,混响时间计算公式汇总,混响器的
  12. 利用CSF算法实现地面点云的粗分割
  13. 小程序的框架研究报告(开发框架、UI框架)
  14. 基于NAR神经网络的时间序列预测
  15. VR乒乓球项目Unity3D 开发经验整理,1总纲
  16. MySQL优化那些事
  17. 2023年度流行色出炉终于轮到火龙果和草莓熊制霸天下了 优漫动游
  18. ECharts之横向柱状图二
  19. 或许,这是最好的一款微信公众号编辑器!
  20. python word 插入转下页及接上页(win32com)

热门文章

  1. BOOTSTRAP4的栅格系统详解
  2. python3循环、字符串+linux高级指令
  3. 推荐七个Python效率工具!
  4. 十六进制补码转换为十进制数总结
  5. C++ 基于多态的职工管理系统_黑马
  6. Anycast 公网加速 AIA解决方案
  7. 简易扫雷游戏c语言程序,C++实现简单的扫雷游戏(控制台版)
  8. Cleave and spread combinators
  9. YOLOv5s网络结构详解
  10. 五险一金 - 医疗保险(常见问题)