创建数据库数据库的创建
# 直接创建 数据库默认在 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;
数据库的查询显示数据库
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