hive 数据库 表 列(DDL)
原创
©著作权归作者所有:来自51CTO博客作者塞上江南o的原创作品,请联系作者获取转载授权,否则将追究法律责任
目录
- hive outline
- 数据库操作
- 创建一个数据库
- 查看数据库详情
- 删除数据库
- 显示视图
- 显示物化视图
- 查看表的类型
- 查询表字段类型
- 查看建表语句
- 内部 外部表结构的转化
- 删除表 drop
- 清除表数据 truncate
- 更改表名
- 更改表属性
- 更改表注释
- 更改SerDe属性
- 移除SerDe属性
- 更改表的文件存储格式
- 更改表的存储位置路径
- 添加列
- 修改列属性
- 替换所有列名
hive outline
链接
数据库操作
创建一个数据库
- 数据库在 HDFS 上的默认存储路径是/user/hive/warehouse/*.db
- 避免要创建的数据库已经存在错误,增加 if not exists 判断
create database if not exists hive_test;
查看数据库详情
删除数据库
如果删除的数据库不存在,最好采用 if exists 判断数据库是否存在
drop database hive_test cascade;
表操作
显示视图
Show Views;
SHOW VIEWS 'test_*'; -- show all views that start with "test_"
SHOW VIEWS FROM test1; -- show views from database test1
显示物化视图
SHOW MATERIALIZED VIEWS [IN/FROM database_name];
查看表的类型
查询表字段类型
查看建表语句
表|视图 都可以查看
内部 外部表结构的转化
需求:将上述的内部表转化为外部表
注意:
(‘EXTERNAL’=‘TRUE’)和(‘EXTERNAL’=‘FALSE’)为固定写法,区分大小写!
1.修改外部表emp为内部表(emp为表名)
alter table emp set tblproperties ('EXTERNAL'='FALSE');
2.修改内部表emp为外部表
alter table emp set tblproperties ('EXTERNAL'='TRUE');
删除表 drop
- 可以删除内部表,也可以删除外部表
- 外部表的原数据并没有删除,删除的是元数据
- 内部表的原数据、元数据都被删除
如果要删除外部表原数据和元数据
ALTER table1 SET TBLPROPERTIES('EXTERNAL'='FALSE') ;
DROP TABLE table1;
注意:
如果 hdfs 开启了回收站,drop 删除的表数据是可以从回收站恢复的,表结构恢复不了,需要自己重新创建;truncate 清空的表是不进回收站的,所以无法恢复 truncate 清空的表,所以 truncate 一定慎用
清除表数据 truncate
注意:
- Truncate 只能删除内部表数据,不能删除外部表数据
- 只是把内部表数据给清除了,表依然存在
- 清空表数据,表结构依然存在
注意:
如果 hdfs 开启了回收站,drop 删除的表数据是可以从回收站恢复的,表结构恢复不了,需要自己重新创建;truncate 清空的表是不进回收站的,所以无法恢复 truncate 清空的表,所以 truncate 一定慎用
更改表名
ALTER TABLE table_name RENAME TO new_table_name;
更改表属性
ALTER TABLE table_name SET TBLPROPERTIES (property_name = property_value, ... );
更改表注释
ALTER TABLE student SET TBLPROPERTIES ('comment' = "new comment for student table");
更改SerDe属性
ALTER TABLE table_name SET SERDE serde_class_name [WITH SERDEPROPERTIES (property_name = property_value, ... )];
ALTER TABLE table_name [PARTITION partition_spec] SET SERDEPROPERTIES serde_properties;
ALTER TABLE table_name SET SERDEPROPERTIES ('field.delim' = ',');
移除SerDe属性
ALTER TABLE table_name [PARTITION partition_spec] UNSET SERDEPROPERTIES (property_name, ... );
更改表的文件存储格式
该操作仅更改表元数据。现有数据的任何转换都必须在Hive之外进行
ALTER TABLE table_name SET FILEFORMAT file_format;
更改表的存储位置路径
ALTER TABLE table_name SET LOCATION "new location";
列操作
添加列
使用ADD COLUMNS,您可以将新列添加到现有列的末尾但在分区列之前
// ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type,...);
alter table [表名] add columns([列名] [类型]);
修改列属性
alter table [表名] change column [旧列名] [新列名] [类型];
替换所有列名
REPLACE COLUMNS 将删除所有现有列,并添加新的列集
// ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type,...);
alter table [表名] replace columns([列名1] [类型], [列名2] [类型]);
分区
链接