Hive的DataBase数据定义操作语言

1,官网提供的创建数据库格式

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment]
[LOCATION hdfs_path]
[MANAGEDLOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];

1.2,[COMMENT database_comment]

数据库备注:
create database three comment 'first_data';

查看Hive的元数据表DBS
select * from DBS;


image.png

desc database three;返回值就是DBS表里面查询得值
hive (default)> desc database three;
OK
three first_data hdfs://cdhalone:9000/user/hive/warehouse/three.db hadoopadmin USER

1.3,[LOCATION hdfs_path]

修改数据库在hdfs上面的存储位置
create database four location '/user/hive/warehouse/lala';


image.png

另外注意:自己指定的的位置的话,在hdfs上面生成的数据库路径文件夹是没有.db,使用默认路径生成的数据库路径文件夹有.db.

desc database four;
four hdfs://cdhalone:9000/usr/hive/warehouse/lala hadoopadmin USER

1.4, [WITH DBPROPERTIES (property_name=property_value, ...)];

加上创建人,创建时间等属性
DBPROPERTIES(翻译为数据库属性)
create database five with dbproperties('name'='dachun','date'='20200202');

这个dbproperties属性不在元数据表DBS里面,在元数据表DATABASE_PARAMS里面


image.png

Hive命令行显示:
hive (four)> desc database extended(扩展) five;
OK
five hdfs://cdhalone:9000/user/hive/warehouse/five.db hadoopadmin USER {date=20200202, name=dachun}
Time taken: 0.029 seconds, Fetched: 1 row(s)

Hive命令行展示的结果为元数据表DBS和DATABASE_PARAMS通过DB_ID字段关联出的

1.5 [IF NOT EXISTS]

创建数据库时候如果不加上if not exists ,如果数据库存在情况下,就会报错数据库已经存在

如果加上create database if not exists one;即使存在数据库one,也不会报错,优雅的自动退出,不会影响到已经创建的one数据库

1.6 [MANAGEDLOCATION hdfs_path]

这个配置参数官网给的介绍是Hive4.0的产品,但是我写这篇为文章时候,Hive最新是3.12,4*还没出现,所以这个是给4.几预留的.

这个配置参数的大概意思是想把内部表和外部表的存储目录在设置数据库在hdfs上面存储位置时候就给他分开,到时候location目录存储的是外部表,managedlocation存储内部表.因为Hive4以下都是数据库的内部表和外部表都存储在数据库配置的location目录下.

2,官网提供的删除数据库格式

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];

RESTRICT(限制)|CASCADE(级联)

默认是RESTRICT,即数据库下面有表的话,不能够直接删除

CASCADE(级联),意思是数据库下有标的话,顺便把表一块删除

drop database if exists one;存在数据库one,正常删除,不存在数据库one,正常退出
不加上if exists如果数据库不存在就报错

注意:删除数据库的话对应的Hdfs上面的数据库文件夹也会被相应地删除

3,修改数据库

3,1官网提供

ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...); -- (Note: SCHEMA added in Hive 0.14.0)

ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role; -- (Note: Hive 0.13.0 and later; SCHEMA added in Hive 0.14.0)

ALTER (DATABASE|SCHEMA) database_name SET LOCATION hdfs_path; -- (Note: Hive 2.2.1, 2.4.0 and later)

ALTER (DATABASE|SCHEMA) database_name SET MANAGEDLOCATION hdfs_path; -- (Note: Hive 4.0.0 and later)

在生产中,不会随意修改Hive的数据库,另外,Hive和MySQL一样,不支持直接修改数据库名

你可能感兴趣的:(Hive的DataBase数据定义操作语言)