hive

1.创建数据库

hive创建数据库的最简单写法和mysql差不多:

create database foo;

仅当名为foo的数据库当前不存在时才创建:

create database if not exists foo;

创建数据库时指定位置,这个位置一般是在hdfs上的位置:

create database foo location '/db/foo';

2.查看已经创建的数据库

show databases ;

使用通配符查看foo开头的数据库:

show databases like'foo.*';

查看创建数据库的语句:

show create database foo ;

hive为每一个数据库创建一个目录,这个数据库中的表将会以子目录的形式放在这个数据库目录下

有一个例外就是default数据库中的表,default数据库没有自己的目录,所以是直接放在/user/hive/warehouse下面的:

同样的,当创建数据库如果没有指定存储位置,默认就是在/user/hive/warehouse/下的:

数据库描述信息

在创建数据库时可以指定描述性信息:

create database foo comment 'this is foo database';

通过describe database可以查看到数据库的详细信息:

describe database foo;


数据库键值对信息

数据库可以有一些描述性的键值对信息,在创建时添加:

create database foo withdbproperties ('own'='cc', 'day'='20180120');

查看数据库的键值对信息:

describe database extended foo;

要修改数据库的键值对信息:

alter database foo set dbproperties ('k1'='v1', 'k2'='v2');

3.删除数据库

drop database if exists foo;

注意:

默认情况下是不允许直接删除一个有表的数据库的:

删除一个有表的数据库有两种办法:

1. 先把表删干净,再删库。

2. 删库时在后面加上cascade,表示级联删除此数据库下的所有表:

drop database if exists foo cascade;

prompt显示当前数据库名称

如果在一个数据库很多的环境下工作,需要 在不同的库之间切来切去(手动敲查询的时候全使用dbName.table可不是什么好主意…),可能一不小心就忘记自己当前在哪个数据库下了,可以通过设置一个属性改变当前的命令提示符,更专业的说法是prompt(用过CLI界面的应该对这个概念很熟悉),通过设置hive.cli.print.current.db属性可以在hive cli中显示当前数据库的名称,比如当前的数据库名称是foo:

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

4.表操作

显示数据库中的表

show tables;

使用Like模糊查询

show tables like "tb_*"

显示表的详细信息

desc tb_name

删除表

drop table tb_name

drop table if exists tb_name

清空表数据

truncate table tb_name

增加列

alter table tb_name

更改表名

alter table tb_name rename to tb_name2

在hive中插入数据有四种方式:

1)、从本地文件系统中导入数据到Hive表;

(2)、从HDFS上导入数据到Hive表;

(3)、从别的表中查询出相应的数据并导入到Hive表中;

(4)、在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表中。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容