1.数据的导入
1.1装载数据
向表中装载数据
load data [local] inpath '/opt/module/datas/test.txt' [overwrite] | into table 具体表 [partition (partcol1=val1,…)];
local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表
overwrite:表示覆盖表中已有数据,否则表示追加
into table:表示加载到哪张表
加载HDFS文件到hive中,需要先将文件上传到HDFS中,然后加载HDFS数据
dfs -put /opt/module/datas/test.txt /user/hadoop102/hive;
load data inpath '/user/hadoop102/hive/test.txt' into table default.test;
1.2通过查询语句向表插入数据(表数据导入表)
基本插入数据
insert into table 具体表 values(添加值);
基本模式插入:
insert overwrite table 具体表1
select 字段名1 from 具体表2;
将具体表2的字段名1的值覆盖到具体表1
多插入模式(根据多张表查询结果)
from test
insert overwrite table test partition(month='202201')
select id, name where month='202203'
insert overwrite table test partition(month='202202')
select id, name where month='202203';
多插入模式的几点注意,此处引用: 1、要将所要执行查询的表语句“from表名”,放在最开头的位置。 2、不能向相同分区插入数据,否则报错 3、如果是非分区表,不能插入相同的表 4、多插入模式是一个优化方式,减少了JOB中的MR的STAGE数量,达到优化目的。
2.数据的导出
2.1Insert导出
格式化导出到本地
insert overwrite local directory '/opt/module/datas/export/test'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'(与创建表时的格式化方法一致)
select * from test;
格式化导出到HDFS
insert overwrite directory '/user/hadoop102/test1'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
select * from test;
2.2用hadoop的-get命令导出
dfs -get /user/hive/warehouse/test/month=202203/000000_0
/opt/module/datas/export/test1.txt;
2.3Hive Shell 命令导出
hive -f/-e ‘执行语句或者脚本’ > file
bin/hive -e 'select * from default.test;' >
/opt/module/datas/export/test2.txt;
3.清除表数据
与mysql一致,都是清除数据,保留表结构
truncate table student;
|