Hive DDL操作(数据库,表的创,删...操作,不涉及表的内容)

创建数据库

数据库的创建

# 直接创建 数据库默认在 HDFS的 /user/hive/warehouse 里面
create database hive_db;

# 指定数据存放的位置 路径会在 HDFS 上
# 注意路径最后要加上库名,不然HDFS上无法查看到创建的库文件
create database hive_db location '/hive/hive_db.db'

# if not exists 判断是否存在,为了避免报错
create database if not exists hive;

mark

数据库的查询

显示数据库

show databases;

模糊查询

show databases like 'hiv*';

查询数据库的信息

hive> desc database hive_db;
OK
hive_db        hdfs://192.168.176.65:9000/hive/hive.db     root    USER    
Time taken: 0.019 seconds, Fetched: 1 row(s)

# 可加一个参数 extended ,查看详细信息
# hive>  desc database extended hive_db;

数据库的修改

说是修改,其实只能增加数据库的额外属性,只要数据库创建好,使用 desc 查询出来的都不能改

# dbproperties() 里的额外属性可以自己定义
hive> alter database hive_db set dbproperties('Ctime'='2020.6.16');
OK
Time taken: 0.132 seconds

# 创建的额外属性 
必须加 extended 才能查询出来
hive> desc database extended hive_db;
OK
hive_db        hdfs://192.168.176.65:9000/hive/hive.db    root    USER    {Ctime=2020.6.16}
Time taken: 0.016 seconds, Fetched: 1 row(s)

数据库删除

删除空的数据库

drop database 数据库名;

删除不为空的数据库(联动删除)(强制删除)

drop database 数据库名  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]

精简入门格式

# 指定 创表 表名
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name 
# 创字段
[(col_name data_type [COMMENT col_comment], ...)]
# 分隔符
[ROW FORMAT row_format]

字段说明

  • CREATE TABLE :创建一个指定名字的表,如果名相同,这会抛出一个异常
  • [EXTERNAL] :可以创建一个外部表,在建表的同时指定一个实际的路径(LOCATION),Hive在创建内部表时,会将数据 移动 到Hive指定的路径,若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除数据的时候,内部表的元数据和数据会一起删除,而外部表只删除元数据,不删除数据。
  • [COMMENT] :为表的字段添加注释
  • [ROW FORMAT] :指定分隔符。比如 row format delimited fields terminated by "\t";

修改表

修改表名

# 格式
alter table 旧表名 rename to 新表名;

hive> alter table hive_db rename to test_db;
OK
Time taken: 0.237 seconds

表的列操作

修改列名 只能一列一列的修改

alter table 表名 change column 旧列名 新列名 新列类型;

hive> alter table test_db  change column id db_id int;
OK
Time taken: 0.239 seconds

添加、替换列名 可以几列同时操作

# 添加列名
alter table 表名 add columns (列名 类型, 列名 类型);

hive> alter table test_db add columns (addr string, age int);
OK
Time taken: 0.211 seconds

# 替换列名   替换列名 是把表原来的所有列都替换了 留下替换语句指定的列名
alter table 表名 replace columns (列名 类型, 列名 类型)
hive> alter table test_db replace columns (id int, year int);
OK
Time taken: 0.267 seconds

## 查看表的结构  只留下了替换语句的字段
hive> desc test_db;
OK
id                      int                                         
year                    int                                         
mouth                   string   # 分区字段                                   

# Partition Information          
# col_name                data_type               comment             

mouth                   string                                      
Time taken: 0.048 seconds, Fetched: 8 row(s)

增加、删除 表的分区

# 增加表的分区
alter table 表名 add partition(指定分区字段)

    hive> alter table test_db add partition(mouth="04");
    OK
    Time taken: 0.225 seconds

# 删除表的分区
alter table 表名 drop partition(指定分区字段)

    hive> alter table test_db drop partition(mouth="04");
    Dropped the partition mouth=04
    OK
    Time taken: 0.312 seconds

删除表

语法:drop table 表名

hive> drop table test_db;
OK
Time taken: 0.439 seconds
发表评论 / Comment

用心评论~