当前位置: 首页 > article >正文

hive修改表名、修改列名、修改分区

文章目录

  • 一、修改表
  • 二、修改列
  • 三、修改分区

官网地址:https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStarted-AlteringandDroppingTables

一、修改表

1、重命名表名

ALTER TABLE table_name RENAME TO new_table_name

示例: 将user表重命名为user_bak
alter table user rename to user_bak;

2、修改表TBLPROPERTIES属性:

ALTER TABLE table_name SET TBLPROPERTIES (property_name = property_value, property_name = property_value,... )


示例:
ALTER TABLE user SET TBLPROPERTIES ('tablename'= 'user表' )

说明:

  • SET TBLPROPERTIES中的属性若不存在则会新增进去;若已存在则会更改原先的值。如上述示例中的tablename属性,若不存在则新增此属性。

3、修改表注释

ALTER TABLE table_name SET TBLPROPERTIES('comment' = new_comment);

虽然看着是修改TBLPROPERTIES的属性,但是comment这个属性是表中的comment注释。

示例:将表注释'测试表'修改为'测试数据'
create table test(
	id string default null comment '编号'
)comment '测试表'
stored as hyperdrive;

ALTER TABLE test SET TBLPROPERTIES('comment' = '测试数据');

4、复制表结构

-- 创建一个相同表结构的表
create table new_table like table_name;

示例:创建user_bak使表结构与user表一致
create table user_bak like user;

5、拷贝表

-- 创建一个相同表结构的表,并把原先的数据复制到新表
CREATE TABLE new_table AS SELECT * FROM old_table

示例:
create table user_bak as select * from user;

6、删除表

drop table if exists table_name;

二、修改列

1、添加列

一次增加一个列(默认添加为最后一列)
ALTER TABLE table_name ADD COLUMNS (new_col INT); 
可以一次增加多个列
ALTER TABLE table_name ADD COLUMNS (c1 INT,c2 STRING); 
添加一列并增加列字段注释
ALTER TABLE table_name ADD COLUMNS (new_col INT COMMENT 'a comment');

注意:hive中添加列只会添加在最后,不支持插入到指定的位置。

2、修改列
修改列名、列类型、列位置

ALTER TABLE table_name CHANGE [COLUMN]
  col_old_name col_new_name column_type
    [COMMENT col_comment]
    [FIRST|AFTER column_name]
 
--- 示例:修改列名
CREATE TABLE test_change (a int, b int, c int);
ALTER TABLE test_change CHANGE a a1 INT; --将 a 列的名字改为 a1.
 
--将 a 列的名字改为 a1,a 列的数据类型改为 string,并将它放置在列 b 之后。新的表结构为: b int, a1 string, c int.
ALTER TABLE test_change CHANGE a a1 STRING AFTER b; 
 
--将 b 列的名字修改为 b1, 并将它放在第一列。新表的结构为: b1 int, a string, c int.
ALTER TABLE test_change CHANGE b b1 INT FIRST; 

该命令将允许用户更改列的名称、数据类型、注释、位置或它们的任意组合,但必须先存在该字段才能修改名字及指定位置.

列更改命令只修改Hive的元数据,不修改数据。用户应该确保表/分区的实际数据布局符合元数据定义。

3、删除列

原有Hive表test_change中有a,b,c,d,e这几个字段
将从test_change中删除“d”列:
ALTER TABLE test_change REPLACE COLUMNS (a int, b int,c string,e string);
将d和e两列一起删除:
ALTER TABLE test_change REPLACE COLUMNS (a int, b int,c string);

注意:如果列字段比较多,可以用show create table table_name; 显示建表语句,将字段一次性复制进来,删除哪些字段就直接去除即可.

三、修改分区

1、增加分区

--增加分区 语法
ALTER TABLE table_name ADD
  partition_spec [ LOCATION 'location1' ]
  partition_spec [ LOCATION 'location2' ] ...
 
partition_spec:
  : PARTITION (partition_col = partition_col_value,
        partition_col = partiton_col_value, ...)

--Add Partitions 语法案例:用户可以用 ALTER TABLE ADD PARTITION 来向一个表中增加分区。当分区名是字符串时加引号。
ALTER TABLE page_view ADD
    PARTITION (dt='2008-08-08', country='us')
      location '/path/to/us/part080808'
    PARTITION (dt='2008-08-09', country='us')
      location '/path/to/us/part080809';

2、修改分区

3、删除分区

---DROP PARTITION 删除分区
ALTER TABLE table_name DROP
    partition_spec, partition_spec,...
删除某分区数据

-- 删除dt = '2021-03-23'分区数据
SET mapred.output.compress = true;
SET hive.exec.compress.output = true;
SET mapred.job.priority = VERY_HIGH;
USE app;
ALTER TABLE table.table_name DROP partition(dt = '2021-03-23') ;

4、拷贝分区表

-- 拷贝同一结构
CREATE
	TABLE app.table_new LIKE app.table_old;
	
-- 拷贝分区表中的数据
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table app.table_new 
partition(dt, dt2)
select * from app.table_old;

5、查看分区结构

show partitions app.table_new


创作不易,欢迎打赏,你的鼓励将是我创作的最大动力。

在这里插入图片描述


http://www.kler.cn/a/396437.html

相关文章:

  • 密码学在网络安全中的应用
  • 【Qt】报错error: undefined reference to `vtable for的最简单解决
  • 论文阅读 - Causally Regularized Learning with Agnostic Data Selection
  • 【计算机网络】设备如何监听 ARP 请求广播
  • 直接映射缓存配置
  • 【C++】string(一)
  • Spring Boot 中 Druid 连接池与多数据源切换的方法
  • ⾃动化运维利器 Ansible-最佳实战
  • git本地分支推送到远程和远程pull到本地
  • sqli-labs靶场13-16关(每日4关)持续更新!!!
  • ChatGPT登录失败的潜在原因分析
  • 数字化转型企业架构设计手册(交付版),企业数字化转型建设思路、本质、数字化架构、数字化规划蓝图(PPT原件获取)
  • 使用pdfjs加载多页pdf并实现打印
  • 基于Java的药店管理系统
  • Java操作PDF:一键生成文件,插入文字、选项、签名及公章
  • IntelliJ IDEA 2024.3(Ultimate Edition)免费化教学
  • Axure网络短剧APP端原型图,竖屏微剧视频模版40页
  • 【会话文本nlp】对话文本解析库pyconverse使用教程版本报错、模型下载等问题解决超参数调试
  • 智慧社区可视化解决方案:科技引领社区服务与管理新篇章
  • windows 11编译安装ffmpeg(包含ffplay)
  • 金融学期末速成笔记
  • VS2022编译32位OpenCV
  • C++组合复用中,委托的含义与作用
  • 鸿蒙next版开发:使用HiChecker检测问题(ArkTS)
  • planRAG运行记录
  • Python 正则表达式进阶用法:量词与范围