hive数据库操作

本文介绍了Hive中的数据库操作,包括创建、删除数据库,以及表的创建、加载数据、修改和删除。还涉及到了分区、视图、索引的管理,并提供了SELECT查询的基本语法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建数据库是用来创建数据库在Hive中语句。在Hive数据库是一个命名空间或表的集合。此语法声明如下:CREATE DATABASE|SCHEMA [IF NOT EXISTS] 在这里,IF NOT EXISTS是一个可选子句,通知用户已经存在相同名称的数据库。可以使用SCHEMA 在DATABASE的这个命令。下面的查询执行创建一个名为userdb数据库:hive> CREATE DATABASE [IF NOT EXISTS] userdb; 或hive> CREATE SCHEMA userdb; 下面的查询用于验证数据库列表:hive> SHOW DATABASES;

删除数据库。假设要删除的数据库名称为userdb。hive> DROP DATABASE IF EXISTS userdb;

以下是使用CASCADE查询删除数据库。这意味着要全部删除相应的表在删除数据库之前。hive> DROP DATABASE IF EXISTS userdb CASCADE;
以下使用SCHEMA查询删除数据库。hive> DROP SCHEMA userdb;

下面的查询创建使用上述数据的表名为 employee。hive> CREATE TABLE IF NOT EXISTS employee ( eid int, name String,

salary String, destination String)
COMMENT ‘Employee details’
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘\t’
LINES TERMINATED BY ‘\n’
STORED AS TEXTFILE;

LOAD DATA语句 一般来说,在SQL创建表后,我们就可以使用INSERT语句插入数据。但在Hive中,可以使用LOAD DATA语句插入数据。 同时将数据插入到Hive,最好是使用LOAD DATA来存储大量记录。有两种方法用来加载数据:一种是从本地文件系统,第二种是从Hadoop文件系统。 语法 加载数据的语法如下:LOAD DATA [LOCAL] INPATH ‘filepath’ [OVERWRITE] INTO TABLE tablename
[PARTITION (partcol1=val1, partcol2=val2 …)] LOCAL是标识符指定本地路径。它是可选的。 OVERWRITE 是可选的,覆盖表中的数据。 PARTITION 这是可选的 示例 我们将插入下列数据到表中。在/home/user目录中名为sample.txt的文件。1201 Gopal 45000 Technical manager
1202 Manisha 45000 Proof reader
1203 Masthanvali 40000 Technical writer
1204 Kiran 40000 Hr Admin
1205 Kranthi 30000 Op Admin
下面的查询加载给定文本插入表中。hive> LOAD DATA LOCAL INPATH ‘/home/user/sample.txt’

OVERWRITE INTO TABLE employee; 下载成功完成,能看到以下回应:OK
Time taken: 15.905 seconds
hive>

Alter Table 语句 它是在Hive中用来修改的表。 语法 声明接受任意属性,我们希望在一个表中修改以下语法。ALTER TABLE name RENAME TO new_name
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec …])
ALTER TABLE name DROP [COLUMN] column_name
ALTER TABLE name CHANGE column_name new_name new_type
ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec …]) Rename To… 语句 下面是查询重命名表,把 employee 修改为 emp。hive> ALTER TABLE employee RENAME TO emp;

Drop Table语句 语法如下:DROP TABLE [IF EXISTS] table_name; 以下查询删除一个名为 employee 的表:hive> DROP TABLE IF EXISTS employee;

ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec
[LOCATION ‘location1’] partition_spec [LOCATION ‘location2’] …;

partition_spec:
(p_column = p_col_value, p_column = p_col_value, …) 以下查询用于将分区添加到employee表。hive> ALTER TABLE employee

ADD PARTITION (year=’2013’)
location ‘/2012/part2012’; 重命名分区 此命令的语法如下。ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec; 以下查询用来命名一个分区:hive> ALTER TABLE employee PARTITION (year=’1203’)
RENAME TO PARTITION (Yoj=’1203’); 删除分区 下面语法用于删除分区:ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec, PARTITION partition_spec,…; 以下查询是用来删除分区:hive> ALTER TABLE employee DROP [IF EXISTS]
PARTITION (year=’1203’);

举个例子来看。假设employee表拥有如下字段:Id, Name, Salary, Designation 和 Dept。生成一个查询检索工资超过30000卢比的员工详细信息,我们把结果存储在一个名为视图 emp_30000.±-----±-------------±------------±------------------±-------+
| ID | Name | Salary | Designation | Dept |
±-----±-------------±------------±------------------±-------+
|1201 | Gopal | 45000 | Technical manager | TP |
|1202 | Manisha | 45000 | Proofreader | PR |
|1203 | Masthanvali | 40000 | Technical writer | TP |
|1204 | Krian | 40000 | Hr Admin | HR |
|1205 | Kranthi | 30000 | Op Admin | Admin |
±-----±-------------±------------±------------------±-------+
下面使用上述业务情景查询检索员的工详细信息:hive> CREATE VIEW emp_30000 AS

SELECT * FROM employee
WHERE salary>30000;
删除一个视图 使用下面的语法来删除视图:DROP VIEW view_name
下面的查询删除一个名为emp_30000的视图:hive> DROP VIEW emp_30000;

下面的查询创建一个索引:hive> CREATE INDEX inedx_salary ON TABLE employee(salary)

AS ‘org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler’;
这是一个指向salary列。如果列被修改,变更使用的索引值存储。 删除索引 下面的语法用来删除索引:DROP INDEX <index_name> ON <table_name>
下面的查询删除名为index_salary索引:hive> DROP INDEX index_salary ON employee;

下面给出的是SELECT查询的语法:SELECT [ALL | DISTINCT] select_expr, select_expr, …
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list]
[HAVING having_condition]
[CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY col_list]]
[LIMIT number];

SELECT [ALL | DISTINCT] select_expr, select_expr, …
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list]
[HAVING having_condition]
[ORDER BY col_list]]
[LIMIT number];

hive> SELECT Dept,count() FROM employee GROUP BY DEPT; 成功执行查询后,能看到以下回应:±-----±-------------+
| Dept | Count(
) |
±-----±-------------+
|Admin | 1 |
|PR | 2 |
|TP | 3 |
±-----±-------------+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值