HIVE 總結 四 Hive DML資料操作

2021-10-08 18:05:30 字數 3605 閱讀 2958

本篇總結hive操作的資料的語法語句,這是常用的sql語法,畢竟用的多的還是crud

語法

load data [local] inpath 『資料的path』 [overwrite] into table student [partition (partcol1=val1,…)];

(1)load data:表示載入資料

(2)local:表示從本地載入資料到hive表;否則從hdfs載入資料到hive表

(3)inpath:表示載入資料的路徑

(4)overwrite:表示覆蓋表中已有資料,否則表示追加

(5)into table:表示載入到哪張表

(6)student:表示具體的表

(7)partition:表示上傳到指定

舉個栗子

建立一張表

create table student(id int, name string) row format delimited fields terminated by 『\t』;

載入本地檔案到hive

load data local inpath 『/opt/data2txt』 into table student;

載入hdfs檔案到hive中

load data inpath 『/user/muxue/student.txt』 into table student;

載入資料覆蓋表中已有的資料

load data inpath 『/user/muxue/student.txt』 overwrite into table student;

通過查詢語句向表中插入資料(insert)

1)建立一張表

create table student2(id int, name string) row format delimited fields terminated by 『\t』;

2)基本模式插入資料

insert into table student2 values(1,『wangwu』),(2,『zhaoliu』);

3)根據查詢結果插入資料

insert overwrite table student2

select id, name from student where id < 1006;

insert into:以追加資料的方式插入到表或分割槽,原有資料不會刪除

insert overwrite:會覆蓋表中已存在的資料

注意:insert不支援插入部分字段,並且後邊跟select語句時,select之前不能加as,加了as會報錯,一定要跟下面的as select區分開。

查詢語句中建立表並載入資料(as select)

create external table if not exists student5(

id int, name string ) as select id,name from student3 where id >10

建立表時通過location指定載入資料路徑

1)上傳資料到hdfs上

hadoop fs -mkdir -p /stu3;

hadoop fs -put stu3.txt /stu3

2)建立表,並指定在hdfs上的位置

create external table if not exists student5(

id int, name string )

row format delimited fields terminated by 『\t』

location 『/student』;

3)查詢資料

hive (default)> select * from student5;

import資料到指定hive表中

注意:先用export匯出後,再將資料匯入。並且因為export匯出的資料裡面包含了元資料,因此import要匯入的表不可以存在,否則報錯。

import table student2  from

'/user/hive/warehouse/export/student';

insert匯出

將查詢的結果匯出到本地

insert overwrite local directory 『/opt/module/hive/datas/export/student』

select * from student;

將查詢的結果格式化匯出到本地

insert overwrite local directory 『/opt/module/hive/datas/export/student1』

row format delimited fields terminated by 『\t』

select * from student;

將查詢的結果匯出到hdfs上(沒有local)

insert overwrite directory 『/user/muxue/student2』

row format delimited fields terminated by 『\t』

select * from student;

注意:insert 匯出,匯出的目錄不用自己提前建立,hive會幫我們自動建立,但是由於是overwrite,所以匯出路徑一定要寫具體,否則很可能會誤刪資料。這個步驟很重要,切勿大意

hadoop命令匯出到本地

dfs -get /user/hive/warehouse/student/student5.txt

/opt/student3.txt;

hive shell 命令匯出

bin/hive -e 『select * from default.student4;』 >

/opt/student4.txt;

export匯出到hdfs上

export table default.student to

『/user/hive/warehouse/export/student』;

Hive DML中的四個by

使用 order by字句排序 asc是公升序也是預設的,desc是降序實操案例 查詢員工按照工資降序排列select from emp order by sal desc 按照部門和工資公升序排序select from emp order by deptno,sal select from emp...

大資料之Hive DML資料操作 四

1.查詢 查 1 1.全表查詢 hive default select from emp 1 2.選擇特定列查詢 hive default select empno,ename from emp 2.刪除和更改 刪除delete from stu where id 1 修改 update stu s...

數倉 Hive 總結之Hive常用命令以及作用

內部表 create table a1 col1 string,col2 int partitioned by statdate int row format delimited fields terminated by t 外部表 create external table b1 col1 str...