hive教程:修改表名、修改列名、修改列类型、添加列、替换列语句

准备

创建 student 表

create table if not exists t_student2( id int, name string
)
row format delimited fields terminated by ',' ;

修改表名

ALTER TABLE 原表名 RENAME TO 新表名

例子

alter table t_student rename to t_student2;

管理表(内部表)

修改内部表的表名,hdfs的相应目录也会跟着修改

外部表

修改外部表的表名,hdfs相应目录 不会改变(不论建表时是否指定 hdfs 路径)

修改列名、类型

ALTER TABLE table_name CHANGE [COLUMN] 原列名 新列名 column_type [COMMENT col_comment] [FIRST|AFTER column_name]

例子:修改列名

alter table t_student change id nid string;

注意: 新列名后面 必须跟着类型,否则报错

例子:修改类型

alter table t_student change id id string;

注意:

  • int类型改成string类型,能够成功
  • int字段可以改为double类型字段
  • double类型不可以改为 int型
  • string类型改成int类型,会报错
  • 任何类型基本都可以转为字符串

添加列

ALTER TABLE table_name ADD COLUMNS (col_name data_type [COMMENT col_comment], ...)

注: ADD 是代表新增一字段,字段位置在所有列后面(partition 列前)

例子

查询表结构:

desc t_student;

添加列:

alter table t_student add columns(sex int);

替换列

按照括号中的顺序,将表的所有列进行替换

ALTER TABLE table_name REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)

注意: 替换表中所有字段

例子

alter table t_student replace columns(sid string,sname string,sex string);

查看表结构:

desc t_student;

例子:删除列

通过替换列功能,可实现 删除列,但 不会删除 hdfs 中的数据

alter table t_student replace columns(sid string);

查看表结构:

desc t_student;

执行结果:

sid                     string

只有一列

查询数据:

select * from t_student;

只能查询出一列

1
1
2
2
3

但 hdfs 中的数据没变


原文出处:/show_1IXl0v0yMes.html