Hive 创建表、导入数据和插入数据操作

Hive 数据库创建,文件夹在和插入create table/ load data/ insert 简单操作
1、Hive创建表----直接使用create语句 (IF NOT EXISTS判断是否已存在表,BY后面接分隔符)
CREATE TABLE IF NOT EXISTS 表名(字段1 数据类型,字段2 数据类型) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’;

比如:CREATE TABLE IF NOT EXISTS test_li01(key INT,value string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

2、Hive创建表----使用子查询的结果集 (表名前可加库名(库名.表名))
create table 表名 as 子查询

比如:create table test02 as select * from test_li where name='ceshi'

3、Hive创建临时表----使用子查询的结果集创建
create temporary table 表名 as select * from 表名2 limit 100;

比如:create temporary table test_linshi03 as select * from test_three limit 100;

4、Hive创建外部表
create external table 表名 (字段1 数据类型,字段2 数据类型) ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’;

比如:

create external table external_table02 (ziduan1 string,ziduan2 string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

5、Hive创建视图----使用子查询的结果集创建
create view 视图名 as select * from 表名 limit 100;

比如:create view test_view02 as select * from test_three limit 100;

加载路径下的数据:
以下(3,4,5,6)加载可不带文件名,但会覆盖目录下的所有文件
6、Hive load data----无分区----加载本地路径数据到表 (overwrite重写)
load data local inpath ‘linux本地路径+文件名’ overwrite into 表名

比如:load data local inpath '/app/hive/load_data.txt' overwrite into table test04

7、Hive load data----有分区----加载本地路径数据到表 (overwrite重写)
load data local inpath ‘linux本地路径+文件名’ overwrite into 表名 partition (ds=‘分区名’)

比如:load data local inpath '/app/hive/load_data.txt' overwrite into table test01 partition (ds='20190506')

8、Hive load data----无分区----加载HDFS路径数据到表 (与本地相比,少一个local)
load data inpath ‘HDFS路径+文件名’ overwrite into table 表名;

比如:load data inpath '/tmp/test07.txt' overwrite into table test_li;

9、Hive load data----有分区----加载HDFS路径数据到表 (overwrite重写)
load data inpath ‘HDFS路径+文件名’ overwrite into table 表名 partition (ds=‘分区名’)

比如:load data inpath '/tmp/test_05.txt' overwrite into table test_h01 partition (ds='20190507')

10、通过子查询结果集将数据保存到系统路径下(可指定具体文件名)
insert overwrite [local] directory select * from …

导出数据到本地目录:(会将目录中已存在的文件删除)
insert overwrite local directory ‘linux本地路径’ select * from 表名;

比如:insert overwrite local directory '/app/hive/' select * from test01;

导出数据到HDFS中:
insert overwrite directory ‘HDFS路径’ select 列名 from 表名;

比如:insert overwrite directory '/app/tmp/' select * from test_hive limit 10;

11、同一个查询结果同时插入到多个表或者多个目录中:
from 表名
insert overwrite local directory ‘linux本地路径’ select *
insert overwrite directory ‘HDFS路径’ select 列名;

比如:

from test_insert123
insert overwrite local directory '/home/hive/' select * 
insert overwrite directory '/tmp/test/' select name='ceshi';

12、对多个表进入插入操作
from 表名 别名
insert overwrite table 表名1 partition(ds=‘分区名1’) select * where 别名.列名=‘值’
insert overwrite table 表名2 partition(ds=‘分区名2’) select * where 别名.列名=‘值’;

比如:

from test_th t1
insert overwrite table test05 partition(ds='20190508') select * where t1.name='2019'
insert overwrite table test06 partition(ds='20190508') select * where t1.name='2019';

13、多表查询结果导出到路径下(左连接)
insert overwrite local directory 'linux本地路径’select * from (select * from 表名1 where ds=分区名1) a left join (select * from 表名2) b on a.列名 = b.列名;
insert overwrite directory 'HDFS路径’select * from (select * from 表名1 where ds=分区名1) a left join (select * from 表名2) b on a.列名 = b.列名;
比如:

insert overwrite local directory '/appcom/tmp/'select * from (select * from test_hive01 where ds=20190507) a left join (select * from table_hive_copy) b on a.col01 = b.col01;
insert overwrite directory '/tmp/dw/'select * from (select * from test_hive01 where ds=20190507) a left join (select * from table_hive_copy) b on a.col01 = b.col01;

注:最好是( 库名.表名 ) 的格式进行操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值