Hive常用命令大全! 您所在的位置:网站首页 hive查询表记录数numberrow Hive常用命令大全!

Hive常用命令大全!

2023-07-17 12:20| 来源: 网络整理| 查看: 265

目录 (1)进入Hive数据库(2)查看某个数据库(3)进入某个数据库(4)查看所有的表(5)显示表结构(6)查询表数据(7)显示表名的分区(8)创建数据库(9)删除数据库(10)创建数据表创建内部表创建外部表创建分区表内外表转换删除分区 (11)加载数据列表(12)重命名表名(13)删除表(14)插入表数据向有分区的表插入数据向无分区的表插入数据 (15)表结构修改增加字段修改字段删除字段 (16)字段类型(17)复合数据类型(18)分桶表(19)创建一个视图

(1)进入Hive数据库 hive (2)查看某个数据库 show databases; (3)进入某个数据库 use 数据库;

默认使用default数据库:

use default; (4)查看所有的表 show tables; (5)显示表结构 desc 表名; (6)查询表数据 select * from 表名; (7)显示表名的分区 show partitions 表名; (8)创建数据库 CREATE SCHEMA userdb; (9)删除数据库 DROP DATABASE IF EXISTS userdb; DROP SCHEMA userdb; (10)创建数据表 use xxdb; create table xxx; #内部表

创建一个表,结构与其他一样

create table xxx like xxx;

创建一个表,结构数据与其他一样,相当于复制一个表

create table xxx as xxx; 创建内部表

创建内部表,制定分隔符为tab键

create table tb_name(name1 int,name2 string) row format delimited fields terminated by '\t'; 创建外部表

创建外部表,制定分隔符为tab键

create external table tb_name(name1 int,name2 string) row format delimited fields terminated by '\t'; 创建分区表

创建分区:分区依据(Id int)

create table tb_name( id int, name string ) partitioned by (Id int) row format delimited fields terminated by '\t';

普通表和分区表区别:有大量数据增加的需要建分区表

内外表转换

内部表转外部表

alter table table-name set TBLPROPROTIES('EXTERNAL'='TURE');

外部表转内部表

alter table table-name set TBLPROPROTIES('EXTERNAL'='FALSE'); 删除分区

#注意:若是外部表,则还需要删除文件(hadoop fs -rm -r -f hdfspath)

alter table table_name drop if exists partitions (d='2016-07-01'); (11)加载数据列表

把本地数据装载到数据表,也就是在metastore上创建信息

load data local inpath '/root/a.txt' into table tb_name;

把HDFS上的数据装载到数据表

load data inpath '/target.txt' into table tb_name;

加载数据到分区表必须指明所属分区

load data local inpath './book.txt' overwrite into table tb_name partition (Id = 10); (12)重命名表名 ALTER TABLE 表名1 RENAME TO 表名2; (13)删除表 drop table 表名;

或者

drop table if exists 表明; (14)插入表数据 向有分区的表插入数据

(1)覆盖现有分区数据,如果没有该指定分区,新建该分区,并且插入数据

INSERT OVERWRITE TABLE 库名.表名 PARTITION(dt='2018-09-12',name='Tom', ...) SELECT ... FROM 库名.表名 where...

(2)向现有的分区插入数据 (之前的数据不会被覆盖)

INSERT INTO TABLE 库名.表名 PARTITION(dt='2018-09-12',name='Tom',...) SELECT ... FROM 库名.表名 WHERE ... 向无分区的表插入数据

(1) 覆盖原有表里的数据,命令和有分区的表类似,只是去掉后面的PARTITION(dt=’ ‘,name=’ ')

INSERT OVERWRITE TABLE 库名.表名 SELECT ... FROM 库名.表名 where...

(2) 向现有的表插入数据 (之前的数据不会被覆盖)

INSERT INTO TABLE 库名.表名 SELECT ... FROM 库名.表名 WHERE ... (15)表结构修改 增加字段 alter table table_name add columns(newscol1 int conment '新增'); 修改字段 alter table table_name change col_name new_col_name new_type; 删除字段

删除字段(COLUMNS中只放保留的字段)

alter table table_name replace columns(col1 int,col2 string,col3string); (16)字段类型 tinyint ,smallint,int,bigint,float,decimal,boolean,string (17)复合数据类型 struct,array,map (18)分桶表

对于每一个表或者分区,Hive可以进一步组织成桶,也就是说桶是更为细精度的数据范围划分。 桶的使用一定要设置如下属性:

hive.enforce.bucketing = true;

创建一个桶:

# 按(id)分为4个bucket create table tb_name ( id int, name string ) clustered by (id) into 4 buckets row format delimited fields terminated by ',';

通过子查询插入数据:

insert into tb_name1 select * from tb_name; (19)创建一个视图 create view v_name as select table1.column1, table2.column2, table3.column3 where table1.column1 = table2.column2;

以上内容仅供参考学习,如有侵权请联系我删除! 如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。 您的鼓励就是博主最大的动力!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有