文章目录
一、修改表
1、重命名表名
ALTERTABLE table_name RENAMETO new_table_name
示例: 将user表重命名为user_bak
altertableuserrenameto user_bak;
2、修改表TBLPROPERTIES属性:
ALTERTABLE table_name SET TBLPROPERTIES (property_name = property_value, property_name = property_value,...)
示例:
ALTERTABLEuserSET TBLPROPERTIES ('tablename'='user表')
说明:
- SET TBLPROPERTIES中的属性
若不存在则会新增进去;若已存在则会更改原先的值。
如上述示例中的tablename属性,若不存在则新增此属性。
3、修改表注释
ALTERTABLE table_name SET TBLPROPERTIES('comment'= new_comment);
虽然看着是修改TBLPROPERTIES的属性,但是comment这个属性是表中的comment注释。
示例:将表注释'测试表'修改为'测试数据'createtable test(
id string defaultnullcomment'编号')comment'测试表'
stored as hyperdrive;ALTERTABLE test SET TBLPROPERTIES('comment'='测试数据');
4、复制表结构
-- 创建一个相同表结构的表createtable new_table like table_name;
示例:创建user_bak使表结构与user表一致
createtable user_bak likeuser;
5、拷贝表
-- 创建一个相同表结构的表,并把原先的数据复制到新表CREATETABLE new_table ASSELECT*FROM old_table
示例:
createtable user_bak asselect*fromuser;
6、删除表
droptableifexists table_name;
二、修改列
1、添加列
一次增加一个列(默认添加为最后一列)ALTERTABLE table_name ADDCOLUMNS(new_col INT);
可以一次增加多个列
ALTERTABLE table_name ADDCOLUMNS(c1 INT,c2 STRING);
添加一列并增加列字段注释
ALTERTABLE table_name ADDCOLUMNS(new_col INTCOMMENT'a comment');
注意:hive中添加列只会添加在最后,不支持插入到指定的位置。
2、修改列
修改列名、列类型、列位置
ALTERTABLE table_name CHANGE [COLUMN]
col_old_name col_new_name column_type
[COMMENT col_comment][FIRST|AFTER column_name]--- 示例:修改列名CREATETABLE test_change (a int, b int, c int);ALTERTABLE test_change CHANGE a a1 INT;--将 a 列的名字改为 a1.--将 a 列的名字改为 a1,a 列的数据类型改为 string,并将它放置在列 b 之后。新的表结构为: b int, a1 string, c int.ALTERTABLE test_change CHANGE a a1 STRING AFTER b;--将 b 列的名字修改为 b1, 并将它放在第一列。新表的结构为: b1 int, a string, c int.ALTERTABLE test_change CHANGE b b1 INTFIRST;
该命令将允许用户更改列的名称、数据类型、注释、位置或它们的任意组合,但必须先存在该字段才能修改名字及指定位置.
列更改命令只修改Hive的元数据,不修改数据。用户应该确保表/分区的实际数据布局符合元数据定义。
3、删除列
原有Hive表test_change中有a,b,c,d,e这几个字段
将从test_change中删除“d”列:
ALTERTABLE test_change REPLACECOLUMNS(a int, b int,c string,e string);
将d和e两列一起删除:
ALTERTABLE test_change REPLACECOLUMNS(a int, b int,c string);
注意:如果列字段比较多,可以用show create table table_name; 显示建表语句,将字段一次性复制进来,删除哪些字段就直接去除即可.
三、修改分区
1、增加分区
--增加分区 语法ALTERTABLE 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 来向一个表中增加分区。当分区名是字符串时加引号。ALTERTABLE page_view ADDPARTITION(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 删除分区ALTERTABLE 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;ALTERTABLEtable.table_name DROPpartition(dt ='2021-03-23');
4、拷贝分区表
-- 拷贝同一结构CREATETABLE 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
创作不易,欢迎打赏,你的鼓励将是我创作的最大动力。
版权归原作者 五月天的尾巴 所有, 如有侵权,请联系我们删除。