简介
在hive中有数据库和数据表的概念,其实和传统数据库的概念是一样的。但是在hive中不管创建的是数据库还是数据表都是文件夹。
一. 创建数据库
- 创建数据库,数据在HDFS上的默认存储路径是
/user/hive/warehouse/*.db
.
create database db_name;
- 避免要创建的数据库已经存在,所以增加if not exists判断(标准写法)
create database if not exists db_name;
- 创建数据库并制定数据在HDFS上的存放位置,使用location
create database if not exists db_name location '/xing/test/demo.db'
创建好数据库,呢么就可以指定数据库创建表,即
create table db_name.tb_name(id int)
创建好的数据表其实就是demo.db目录下的一个文件夹。
如果不指定到db文件,而是指定到目录,即:
create database if not exists db_name location '/xing/test/demo'
呢么demo这个目录就是数据库的目录,凡是创建到的db_name的数据库都会存放在demo目录下,例如
/xing/test/demo/user 表示的就是db_name的一张表user
- 如果location指定的目录并不存在,呢么创建的数据库就是失败的,但是不会显示错误信息,查看数据库的时候就会看到没有这个数据库。
二. 查询数据库
- 显示全部的数据库
show database;
- 显示过滤的数据库
show database like 'db_name';
- 显示数据库信息
desc database db_name;
- 显示更详细的信息,添加extended参数
desc database extended db_name;
- 切换数据库
use db_name
直接使用use就可以切换数据库
修改数据库
用户可以通过使用ALTER DATABASE 命令为某个数据库的DBPROPERTIES设置键-值对属性值,来描述这个数据库的属性信息。数据库的其他元数据信息是不可更改的,包括数据库名和数据库所在的目录位置。即 desc展示的数据是不可更改的。修改数据库也就是添加数据库的属性,并且这个些属性只能通过extended查看。
alter database db_name set dbproperties('createtime'='20170830');
在hive中查看修改结果:
删除数据库
- 删除空数据库
drop database db_name;
- 如果删除的数据库不存在,最好采用if exists判断数据是否存在
drop table if exists db_name;
- 如果数据库不为空,可以采用cascade命令,强制删除
drop database db_name cascade;