Blog
hive-04 DDL 增删改查库和表
创建数据库
CREATE DATABASE [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];
创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db
create database db_hive
避免要创建的数据库已经存在错误,增加if not exists判断
create database if not exists db_hive2
创建一个数据库,指定数据库在HDFS上存放的位置
create database db_hive3
location '/db_hive3.db'
WITH DBPROPERTIES 建表的辅助属性 比如 作者、创建时间等
显示数据库
- 显示数据库
show databases;
查看数据库详情
- 显示数据库信息
desc database db_hive
显示数据库详细信息
desc database extended db_hive;
切换数据库
use db_hive;
修改数据库
- 为某个数据库的DBPROPERTIES设置键值属性值
alter database db_hive set dbproperties ('createtime'='20210101')
查看修改结果
desc database db_hive extened db_hive
删除数据库
- 删除空数据库
drop database db_hive
如果删除的数据库不存在,最好采用if exists判断数据库是否存在
drop database if exists db_hive
如果数据库不为空,可以采用cascade命令,强制删除
drop database db_hive cascade
创建表
- 建表语法
create [external] table [if not exists] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTERED BY (col_name, col_name, ...)]
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets buckets]
[row format row_format]
[stored as file_format]
[location hdfs_path]
[tbproperties (property_name=property_value, ...)]
[as select_statement]
- external 外部表
- partitioned by 分区表
- clustered by 分桶表
- row format 定义行的格式
- stored as 定义文件格式
- tblproperties 额外属性
管理表(内部表)
- 删除管理表是,hive也会删除这个表中的数据
- 中间表,临时表会使用管理表,数据共享的其他表都用外部表
管理表与外部表的相互转换
- 查询表的类型
desc formatted student
- 修改内部表student为外部表
- ('EXTERNAL'='TRUE') 和 ('EXTERNAL'='FALSE') 为固定写法,区分大小写!
alter table student set tblproperties('EXTERNAL'='TRUE');
查询表的类型
desc formatted student
修改外部表student为内部表
alter table student set tblproperties('EXTERNAL'='FALSE');
建表指定字段分隔符
create table test1 (
id string,
name string
)
row format delimited
fields terminated by ',';
修改表
- 重命名表
alter table table_name rename to new_table_name
增加、修改、删除表分区
增加、修改、替换列信息
- 更新列
alter table table_name change [column] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name]
- 增加和替换列
- add是代表新增一字段,字段位置在所有列后面(partition 列前)
- replace 则是表示替换表中所有字段针对整个表
alter table table_name add|replace columns (col_name data_type [COMMENT col_comment], ...)
删除表
- 管理表 元数据 hdfs数据都删除
- 外部表 只删除元数据
drop table table_name;