本文围绕以下框架,对Hive及Mysql中,常用的字段/表处理语句进行整理汇总。

1. 创建表

(1)Hive

(2)Mysql

2. 字段重命名

(1)Hive

-- 改变列名/类型/位置/注释

ALTERTABLE table_name CHANGE

[CLOUMN] col_old_name col_new_namecolumn_type

[CONMMENT col_conmment]

[FIRST|AFTER column_name];

这个命令可以修改表的列名,数据类型,列注释和列所在的位置顺序,FIRST将列放在第一列,AFTER col_name将列放在col_name后面一列,

ALTER TABLE test_table CHANGE col1 col2 STRING COMMENT 'The datatype of col2 is STRING'AFTER col3;

上面的语句将列名col2修改为col2,数据类型为STRING并添加注释,最后将这一列放在col3后面。

(2)Mysql

alter table test change t_name t_name_new varchar(20);  //对字段重命名

3. 表重命名

(1)hive

ALTER TABLE table_name RENAME TO new_table_name;

上面这个命令可以重命名表,数据所在的位置改变,但分区名都没有改变。

(2)Mysql

RENAMETABLE People TOUsers;

4. 新增字段

(1)hive

数值型:ALTER TABLE table_A ADD COLUMNS (rank bigint COMMENT '排名顺序')

字符型:ALTER TABLE table_A ADD COLUMNS (type string COMMENT '拍摄类型')

(2)Mysql

数值型:alter table table_A add column rank bigint(20)DEFAULTNULL COMMENT '排名顺序'

字符型:alter table table_A addcolumn type varchar(128)DEFAULT NULL COMMENT ‘拍摄类型’

5. 删除字段

Hive & Mysql

ALTER TABLE name  DROP COLUMN column_name;

6. 删除表

(1)Hive

drop table (if not exists) table_name;

(2)Mysql

永久删除:DROP TABLE table_name;

删除数据、保留结构:truncate table 表名;

truncate用于删除所有的行,这个行为在hive元存储删除数据是不可逆的;或delete from 表名 where 1 = 1 。

delete用于删除特定条件下的行,使用where 1=1 删除所有行  SQL中where 1 = 1 的使用。

truncate 不能删除外部表!因为外部表里的数据并不是存放在Hive Meta store中

参考文献: