本文围绕以下框架,对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中
参考文献: