六、大数据之Hive-05
DML数据操作
1、数据导入
1、向表中装载数据(Load)
? (1)语法
hive> load data [local] inpath '/opt/module/datas/student.txt' [overwrite] into table student
[partition (partcol1=val1,…)];
? a、load data:表示加载数据
? b、local:表示从本地加载数据到 hive 表;否则从 HDFS 加载数据到 hive 表
? c、inpath:表示加载数据的路径
? d、overwrite:表示覆盖表中已有数据,否则表示追加
? f、into table:表示加载到哪张表
? g、student:表示具体的表
? h、partition:表示上传到指定分区
? (2)案例
hive (default)> create table student(id string, name string) row format delimited
fields terminated by '\t';
hive (default)> load data local inpath '/opt/module/datas/student.txt' into table
default.student;
hive (default)> dfs -put /opt/module/datas/student.txt /user/atguigu/hive;
hive (default)> load data inpath '/user/atguigu/hive/student.txt' into table
default.student;
hive (default)> dfs -put /opt/module/datas/student.txt /user/atguigu/hive;
hive (default)> load data inpath '/user/atguigu/hive/student.txt' overwrite into
table default.student;
2、通过查询语句向表中插入数据(Insert)
hive (default)> create table student(id int, name string) partitioned by (month
string) row format delimited fields terminated by '\t';
hive (default)> insert into table student partition(month='202109')
values(1,'wangwu'),(2,’zhaoliu’);
hive (default)> insert overwrite table student partition(month='202108')
select id, name from student where month='202109';
? insert into:以追加数据的方式插入到表或分区,原有数据不会删除
? insert overwrite:会覆盖表或分区中已存在的数据
注意:insert 不支持插入部分字段
hive (default)> from student
insert overwrite table student partition(month='202107')
select id, name where month='202109'
insert overwrite table student partition(month='202106')
select id, name where month='202109';
3、查询语句中创建表并加载数据(As Select)
create table if not exists student3
as select id, name from student;
4、创建表时通过Location指定加载数据路径
hive (default)> dfs -mkdir /student;
hive (default)> dfs -put /opt/module/datas/student.txt /student;
hive (default)> create external table if not exists student5(
id int, name string
)
row format delimited fields terminated by '\t'
location '/student;
hive (default)> select * from student5;
5、Import数据到指定Hive表中
hive (default)> import table student2 partition(month='202109') from '/user/hive/warehouse/export/student';
2、数据导出
1、Insert导出
hive (default)> insert overwrite local directory
'/opt/module/datas/export/student'
select * from student;
hive(default)>insert overwrite local directory
'/opt/module/datas/export/student1'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' select * from
student;
hive (default)> insert overwrite directory '/user/atguigu/student2'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
select * from student;
2、Hadoop命令导出到本地
hive (default)> dfs -get /user/hive/warehouse/student/month=202109/000000_0
/opt/module/datas/export/student3.txt;
3、Hive Shell 命令导出
[lyinl@hadoop102 hive]$ bin/hive -e 'select * from default.student;' >
/opt/module/datas/export/student4.txt;
4、Export导出到HDFS上
(defahiveult)> export table default.student to
'/user/hive/warehouse/export/student';
export 和 import 主要用于两个 Hadoop 平台集群之间 Hive 表迁移。
3、清楚表中数据(Truncate)
hive (default)> truncate table student;
|