「基础」SQL-Hive中常用的数据库操作

2021-05-18 10:00:55 浏览数 (1)

今天我们来讲讲Hive中常用的数据库操作指令及相关效果。

01-查看数据库

执行语句:

代码语言:javascript复制
show databases;

执行效果:

代码语言:javascript复制
hive (default)> show databases;
OK
database_name

02-创建数据库

创建数据库:

代码语言:javascript复制
create database 数据库名;

执行效果:

代码语言:javascript复制
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)

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

代码语言:javascript复制
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

可以使用以下语句避免报错:

代码语言:javascript复制
create database if not exists 数据库名;

执行结果:

代码语言:javascript复制
hive (default)> create database if not exists hive_test;
OK
Time taken: 0.113 seconds

03-查询数据库属性

普通查询:

代码语言:javascript复制
describe database 数据库名;

查询结果:

代码语言:javascript复制
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)

简略写法:

代码语言:javascript复制
desc database 数据库名;

查询结果:

代码语言:javascript复制
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)

04-使用数据库

操作语句:

代码语言:javascript复制
use 数据库名;

执行结果:

代码语言:javascript复制
hive (default)> use hive_in_action;
OK
Time taken: 0.107 seconds
hive (hive_in_action)> 

显示当前所在数据库操作:

代码语言:javascript复制
set hive.cli.print.current.db=true;

执行结果:

代码语言:javascript复制
hive> set hive.cli.print.current.db=true;
hive (hive_in_action)> 

05-删除数据库

普通删除:

代码语言:javascript复制
drop database 数据库名;

执行效果:

代码语言:javascript复制
hive (default)> drop database hive_test;
OK
Time taken: 1.201 seconds
hive (default)> 

默认情况下,Hive不允许删除一个里面有表存在的数据库。

如果想删除数据库,要么先将数据库中的表全部删除,此时可以使用CASCADE关键字,使用该关键字后,Hive会自己将数据库下的表全部删除。慎用慎用!

强行删除:

代码语言:javascript复制
drop database 数据库名 cascade;

执行结果:

代码语言:javascript复制
hive (default)> use hive_in_action;
OK
Time taken: 1.602 seconds
 
hive (hive_in_action)> drop database hive_in_action;
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. InvalidOperationException(message:Database hive_in_action is not empty. One or more tables exist.)
 
hive (hive_in_action)> drop database hive_in_action cascade;
OK
Time taken: 2.491 seconds
 
hive (hive_in_action)> show databases;
OK
database_name
default
hive_test

以上,就是本期内容,希望对你有帮助~

0 人点赞