Hive零基础从入门到实战 入门篇(六)HiveQL:数据库操作

目录

前言

1. 查看Hive中当前有哪些数据库

2. 创建数据库

3. 通过正则匹配筛选数据库

4. 创建同名数据库抛出错误

5. 查询数据库属性

5.1 普通查询

5.2 简略写法

5.3 额外查询

5.4 如建库时增加备注可在此查看

6. 使用数据库

7. 显示当前所在数据库

8. 删除数据库

8.1 普通删除

8.2 强制删除


前言

首先按照入门篇(一)环境搭建中的操作启动Hive,本文来介绍Hive中的数据库操作语句。Hive中数据库的概念本质上仅仅是表的一个目录或者命名空间。不过老实说,如果你是数据分析师,本文的内容你在工作中可能都用不到,因为没有公司会让数据分析师建库或者删库……

1. 查看Hive中当前有哪些数据库

show databases;

执行效果如下:

hive (default)> show databases;
OK
database_name
default
Time taken: 2.789 seconds, Fetched: 1 row(s)

2. 创建数据库

create database 数据库名;

执行效果如下: 

hive (default)> create database hive_in_action;
OK
Time taken: 1.602 seconds
hive (default)> show databases;
OK
database_name
default
hive_in_action
Time taken: 0.172 seconds, Fetched: 2 row(s)
hive (default)> 

3. 通过正则匹配筛选数据库

#查询库名以hive开头的所有数据库
show databases like 'hive.*';

执行效果如下:

hive (default)> create database hive_test;
OK
Time taken: 0.225 seconds
hive (default)> show databases;
OK
database_name
default
hive_in_action
hive_test
Time taken: 0.025 seconds, Fetched: 3 row(s)
hive (default)> show databases like 'hive.*';
OK
database_name
hive_in_action
hive_test
Time taken: 0.027 seconds, Fetched: 2 row(s)

4. 创建同名数据库抛出错误

如果要创建的数据库名已经存在的话,将会抛出一个错误信息,如下:

hive (default)> create database hive_test;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Database hive_test already exists
hive (default)> 

 使用如下语避免在这种情况下抛出错误信息:

create database if not exists 数据库名;

执行效果如下:

hive (default)> create database if not exists hive_test;
OK
Time taken: 0.113 seconds
hive (default)> 

 

5. 查询数据库属性

5.1 普通查询

describe database 数据库名;

执行效果如下:

hive (default)> describe database hive_test;
OK
db_name	comment	location	owner_name	owner_type	parameters
hive_test		hdfs://hadoop:9000/usr/hive/warehouse/hive_test.db	root	USER	
Time taken: 0.29 seconds, Fetched: 1 row(s)

5.2 简略写法

desc database 数据库名;

 执行效果如下:

hive (default)> desc database hive_test;
OK
db_name	comment	location	owner_name	owner_type	parameters
hive_test		hdfs://hadoop:9000/usr/hive/warehouse/hive_test.db	root	USER	
Time taken: 0.29 seconds, Fetched: 1 row(s)

5.3 额外查询

用户建库时可以为数据库增加一些和其相关的键值对属性信息,键值对内容可完全自定义(爱写啥写啥)。

create database 数据库名
with dbproperties('creator' = 'hzy', 'date=' = '2019-04-12');

查询时使用如下语句:

desc database extended 数据库名;

执行效果如下:

hive (default)> create database hive_hzy
              > with dbproperties('creator' = 'hzy', 'date=' = '2019-04-12');
OK
Time taken: 0.37 seconds
hive (default)> desc database extended hive_hzy;
OK
db_name	comment	location	owner_name	owner_type	parameters
hive_hzy		hdfs://hadoop:9000/usr/hive/warehouse/hive_hzy.db	root	USER {date==2019-04-12, creator=hzy}
Time taken: 0.153 seconds, Fetched: 1 row(s)
hive (default)> 

5.4 如建库时增加备注可在此查看

用户建库时可以为数据库增加注释,注释一样爱写啥写啥。

create database 数据库名
comment 'database for test';

执行效果如下:

hive (default)> create database hive_test
              > comment 'database for test';
OK
Time taken: 0.343 seconds
hive (default)> describe database hive_test;
OK
db_name	comment	location	owner_name	owner_type	parameters
hive_test	database for test	hdfs://hadoop:9000/usr/hive/warehouse/hive_test.db   root	USER	
Time taken: 0.367 seconds, Fetched: 1 row(s)
hive (default)> desc database hive_test;
OK
db_name	comment	location	owner_name	owner_type	parameters
hive_test	database for test	hdfs://hadoop:9000/usr/hive/warehouse/hive_test.db   root	USER	
Time taken: 0.029 seconds, Fetched: 1 row(s) 

6. 使用数据库

use 数据库名;

执行效果如下:

hive (default)> use hive_in_action;
OK
Time taken: 0.107 seconds
hive (hive_in_action)> 

7. 显示当前所在数据库

进入HIve后,如果用户没有显式指定数据库,那么将会使用默认的数据库default,且默认情况下是不会显示当前所在数据库的,通过输入如下命令设置hive.cli.print.current.db为true,即可显示,此命令默认为false,即不显示。

set hive.cli.print.current.db=true;

执行效果如下:

hive (default)> set hive.cli.print.current.db=false;
hive> set hive.cli.print.current.db=true;
hive (default)> 

8. 删除数据库

正所谓从删库到跑路,此乃终极大招,需谨记,啊哈哈哈。

8.1 普通删除

当数据库中没有表时,可使用如下命令直接删除。

drop database 数据库名;

 执行效果如下:

hive (default)> drop database hive_test;
OK
Time taken: 1.201 seconds
hive (default)> 

8.2 强制删除

默认情况下,Hive不允许删除一个里面有表存在的数据库,如果想删除数据库,要么先将数据库中的表全部删除,此时可以使用CASCADE关键字,使用该关键字后,Hive会自己将数据库下的表全部删除。慎用慎用。

drop database 数据库名 cascade;

  执行效果如下:

hive (default)> use hive_hzy;
OK
Time taken: 1.602 seconds

hive (hive_hzy)> drop database hive_hzy;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. InvalidOperationException(message:Database hive_hzy is not empty. One or more tables exist.)

hive (hive_hzy)> drop database hive_hzy cascade;
OK
Time taken: 2.491 seconds

hive (hive_hzy)> show databases;
OK
database_name
default
hive_in_action
hive_test
Time taken: 0.656 seconds, Fetched: 3 row(s)
hive (hive_hzy)> 

 


能看到这里的同学,就右上角点个赞顺便关注我吧,3Q~

你可能感兴趣的:(Hive零基础从入门到实战 入门篇(六)HiveQL:数据库操作)