Hive DDL -数据库

DDL全称及简介

DDL: Data Definition Language https://cwiki.apache.org/confluence/display/Hive
以create delete drop alter关键字开头的。
1.Database是HDFS上的一个文件夹,hive默认自带一个default数据库,默认数据库存放位置:/user/hive/warehouse

[hadoop@hadoop001 conf]$ hdfs dfs -ls /user/hive/warehouse
drwxr-xr-x   - hadoop supergroup          0 2018-11-07 08:51 /user/hive/warehouse/ruoze_helloword

2.数据库的位置是由hive.metastore.warehouse.dir参数决定的。hive的所有参数都是可以通过官方网站查询,网址如下:https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties
3.在hive中也可以查看或者设置指定的配置参数,语法为:set key set key=value

eg:hive (default)> set hive.metastore.warehouse.dir;(查看hive.metastore.warehouse.dir)
hive.metastore.warehouse.dir=/user/hive/warehouse
如果是要设置参数: set key=value;(没有等于号就是查看,有等于号就是赋值)

所谓DDL就是(Create/Drop/Alter/Use Database)DDL语言可以通过官网查询:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL

创建数据库的语法:

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment] (备注信息)
[LOCATION hdfs_path](路径可以指定,但是一般就让它存在默认路径下面)
[WITH DBPROPERTIES (property_name=property_value, ...)];
hive (default)> create database d5_hive;
hive (default)> show databases;
d5_hive
default(d5_hive默认存放在/user/hive/warehouse/d5_hive.db里面)
CREATE DATABASE IF NOT EXISTS d5_hive; (加上IF NOT EXISTS,若d5_hive已经存在就不创建,不会报错,如果没有就创建)
##非default的存放路径:${hive.metastore.warehouse.dir}/dbname.db

创建数据库的语法举例如下:

hive (default)> create database if not exists d5_hive_2 comment 'this is ruozadata d5' with dbproperties('creator'='ruoze','date'='20181020');
hive (default)> show databases like 'd5*'; (查找以d5开头的数据库)
d5_hive
d5_hive_2
hive (default)> desc database d5_hive_2;(查看d5_hive_2信息)
d5_hive_2 this is ruozadata d5 hdfs://hadoop001:9000/user/hive/warehouse/d5_hive_2.db hadoop USER 
hive (default)> desc database extended d5_hive_2;(更详细的查看d5_hive_2信息)
d5_hive_2 this is ruozadata d5 hdfs://hadoop001:9000/user/hive/warehouse/d5_hive_2.db hadoop USER {date=20181020, creator=ruoze}
hive (default)> use d5_hive;(切换数据库到d5_hive)
hive (d5_hive)> set hive.cli.print.current.db=true; (设置hive后面是否要显示具体数据库名字的参数)默认值为true。
hive (d5_hive)> set hive.cli.print.current.db=false;(设置值为false则不打印显示,设置为true就会打印显示)

修改数据库的语法:

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)

修改数据库的语法举例如下:

hive (d5_hive)> alter database d5_hive_2 set dbproperties ('edited-by'='jepson');
hive (d5_hive)> desc database extended d5_hive_2;
d5_hive_2 this is ruozadata d5 hdfs://hadoop001:9000/user/hive/warehouse/d5_hive_2.db hadoop USER {date=20181020, edited-by=jepson, creator=ruoze}

删除数据库的语法:

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
cascade: hibernate/jpa(1对多的时候,你删除1的一端是否删除多的一端 (删除数据库的时候,1的一端对应的就是数据库,多的一端对应的就是数据库中的表))

删除数据库的语法举例如下:

hive (d5_hive)> drop database d5_hive;(d5_hive数据库下面有表存在,所以删除时候报错了)
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. InvalidOperationException(message:Database d5_hive is not empty. One or more tables exist.)
hive (d5_hive)> drop database d5_hive cascade;(加上cascade就会把数据库以及其下面的表一起删掉,公司生产一般禁止用,避免误删,这是高危命令)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值