目录

  • ​​hive outline​​
  • ​​数据库操作​​
  • ​​创建一个数据库​​
  • ​​查看数据库详情​​
  • ​​删除数据库​​
  • ​​表操作​​
  • ​​显示视图​​
  • ​​显示物化视图​​
  • ​​查看表的类型​​
  • ​​查询表字段类型​​
  • ​​查看建表语句​​
  • ​​内部 外部表结构的转化​​
  • ​​删除表 drop​​
  • ​​清除表数据 truncate​​
  • ​​更改表名​​
  • ​​更改表属性​​
  • ​​更改表注释​​
  • ​​更改SerDe属性​​
  • ​​移除SerDe属性​​
  • ​​更改表的文件存储格式​​
  • ​​更改表的存储位置路径​​
  • ​​列操作​​
  • ​​添加列​​
  • ​​修改列属性​​
  • ​​替换所有列名​​
  • ​​分区​​

hive outline

​​链接​​

数据库操作

创建一个数据库

  1. 数据库在 HDFS 上的默认存储路径是/user/hive/warehouse/*.db
  2. 避免要创建的数据库已经存在错误,增加 if not exists 判断
create database if not exists hive_test;

查看数据库详情

desc database hive_test;

hive 数据库 表 列(DDL)_表名

删除数据库

如果删除的数据库不存在,最好采用 if exists 判断数据库是否存在

  • 删除空数据库
drop database  hive_test;
  • 强制删除不为空数据库
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];

查看表的类型

desc formatted emp;

hive 数据库 表 列(DDL)_数据库_02

hive 数据库 表 列(DDL)_数据库_03

查询表字段类型

desc [表名];

hive 数据库 表 列(DDL)_表名_04

查看建表语句

表|视图 都可以查看

show create table dept;

hive 数据库 表 列(DDL)_表名_05

内部 外部表结构的转化

需求:将上述的内部表转化为外部表

​注意:​​(‘EXTERNAL’=‘TRUE’)和(‘EXTERNAL’=‘FALSE’)为固定写法,区分大小写!

1.修改外部表emp为内部表(emp为表名)

alter table emp set tblproperties ('EXTERNAL'='FALSE');

2.修改内部表emp为外部表

alter table emp set tblproperties ('EXTERNAL'='TRUE');

删除表 drop

  1. 可以删除内部表,也可以删除外部表
  2. 外部表的原数据并没有删除,删除的是元数据
  3. 内部表的原数据、元数据都被删除
drop table [表名];

​如果要删除外部表原数据和元数据​

ALTER table1 SET TBLPROPERTIES('EXTERNAL'='FALSE') ;
DROP TABLE table1;

​注意:​​如果 hdfs 开启了回收站,drop 删除的表数据是可以从回收站恢复的,表结构恢复不了,需要自己重新创建;truncate 清空的表是不进回收站的,所以无法恢复 truncate 清空的表,所以 truncate 一定慎用

清除表数据 truncate

​注意:​

  1. Truncate 只能删除内部表数据,不能删除外部表数据
  2. 只是把内部表数据给清除了,表依然存在
  3. 清空表数据,表结构依然存在
truncate table emp;

​注意:​​如果 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] [类型]);

分区

​​链接​​