Hive基于命令行的DDL和DML

Posted 互联网IT信息

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive基于命令行的DDL和DML相关的知识,希望对你有一定的参考价值。

1. Hive命令行启动


在用命令行操作hive时,需要在hive的安装目录的bin子目录下:执行如下命令:

hive

测试:

hive> show tables;

OK

Time taken: 0.9 seconds

hive>

以下的DDL和DML命令均通过此命令行执行即可。


2. Hive的DDL操作


关于数据库

1 创建数据库 CREATE (DATABASE|SCHEMA) database_name

例如:create database testdb;


2 使用某个数据库 USE DBname

例如: use testdb;


3 删除数据库 DROP (DATABASE|SCHEMA)  database_name

例如: drop database testdb;


3. Hive的DML操作


1 创建一张表

语法:

create table 表名  

(  

  列名1 数据类型,  

  列名N 数据类型  

)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY ‘\t’ //用来设置列之间的分隔符

STORED AS TEXTFILE;

例子:

create table testdb

(

name string,

des string

)

ROW FORMAT DELIMITED

FIELDS TERMINATED BY '\t'

STORED AS TEXTFILE;


2 修改表

语法:

修改表名字

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 ...])

例子:

ALTER TABLE testdb  RENAME TO testdb2;


3 列出表

语法:

列出所有表

show tables;

列出指定表

show tables tablename;

例子:

show tables;


4 加载数据 将本地符合条件的文件,导入到hive

语法:

load data local inpath ‘本地路径’ into table 表名;

例子:

在本地创建文件data.txt 文件内容如下:

Mike aaa

Jone bbb

注意:每一行的单词之家要以一个tab键隔开,相当于\t。因为创建表时,指定每列之间的分隔符是\t

然后执行如下命令:

load data local inpath '/home/project/soft/hive/apache-hive-1.2.1-bin/bin/data.txt' into table testdb2;


5 查看表的结构

语法:

desc 表名;

例子:

desc testdb2;


6 查询表

语法:

select * from 表名;

例子:

select * from testdb2;


7 删除表

语法:

drop table 表名;

例子:

drop table testdb2;


8 清空表中的数据

语法:

truncate table 表名;

例子:

truncate table testdb2;


4. Hive的复杂查询


1 SELECT ... WHERE 查询复合where后的条件的记录

例子:

select * from testdb2 where name = 'mike2’;


2 SELECT ... ORDER BY 按照某个字段升序或者降序展示结果

注意:默认是某一字段升序排列

例子:

升序:

select * from testdb2 order by name;

降序:

select * from testdb2 order by name desc;


3 SELECT... GROUP BY 按照某一字段分组

例子:

select name,count(*) from testdb2 group by name;


4 SELECT ... JOIN 多表之间关联查询

有不同类型的联接给出如下:

JOIN

LEFT OUTER JOIN

RIGHT OUTER JOIN

FULL OUTER JOIN

例子:

select t2.name,t2.des,t3.name,t3.des from testdb2 t2 join testdb33 t3 on (t2.name=t3.name);

以上是关于Hive基于命令行的DDL和DML的主要内容,如果未能解决你的问题,请参考以下文章

Hive学习——DDL&DML&DQL语句

Hive 系列—— Hive CLI 和 Beeline 命令行的基本使用

为啥 alter 命令称为 DDL 而不是 DML?

第一讲SQL命令的DDL和DML操作讲解

MySQL 命令提取 DDL 和 DML 并排除不需要的表? [复制]

Hbase的常用的shell命令&Hbase的DDL操作&Hbase的DML操作