目录
一、表
二、列
三、分区
一、表
1、重命名表重命名表的语句如下:
ALTER TABLE table_name RENAME TO new_table_name
2、修改表属性:
ALTER TABLE table_name SET TBLPROPERTIES (property_name = property_value, property_name = property_value,... )
3、修改表注释
ALTER TABLE table_name SET TBLPROPERTIES('comment' = new_comment);
4、拷贝表
CREATE TABLE app.table_new AS
SELECT * FROM app.table_old
5、删除表
drop table if exists table.table_name;
二、列
1、添加列
Add Columns 语法
一次增加一个列(默认添加为最后一列)
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');
2、修改列
Change Column Name/Type/Position/Comment 语法
ALTER TABLE table_name CHANGE [COLUMN]
col_old_name col_new_name column_type
[COMMENT col_comment]
[FIRST|AFTER column_name]
--- Change Column Name/Type/Position/Comment 案例
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;
3、删除列
Replace Columns 语法
原有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、增加分区
--Add Partitions 语法
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、拷贝分区表
https://blog.csdn.net/qq_43193797/article/details/99957879?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7.control&dist_request_id=cf9fa99e-7862-4873-a61a-a70540b7f708&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-7.control
-- 拷贝同一结构
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
参考:?
Hive列操作汇总(添加/更新/删除/虚拟列)
Hive 修改table、column
|