Hive DML 資料操作

2021-08-20 19:39:06 字數 3987 閱讀 2986

1 資料匯入

1 向表中裝載資料(load)

1)語法

hive>load data [local] inpath '/opt/module/datas/student.txt' [overwrite] into table student [partition (partcol1=val1,…)];

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

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

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

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

(5) student:表示具體的表

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

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

2)實操案例

(0)建立一張表

hive (default)> create table student(id string, name string) row format delimited fields terminated by '\t';

(1)載入本地檔案到 hive

hive (default)> load data local inpath '/opt/module/datas/student.txt' into table default.student;

(2)載入 hdfs 檔案到 hive 中

上傳檔案到 hdfs

dfs -put /opt/module/datas/student.txt /user/joker/hive;

載入 hdfs 上資料

load data inpath '/user/joker/hive/student.txt' into table default.student;

(3)載入資料覆蓋表中已有的資料

load data local inpath '/opt/module/datas/student.txt' overwrite into table default.student;

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

1)建立一張分割槽表

create table student(id string, name string) partitioned by (month string)

row format delimited fields terminated by '\t';

2)基本插入資料

insert into table student partition(month='201709')

values('1004','wangwu');

3)基本模式插入(根據單張表查詢結果)

insert overwrite table student partition(month='201708')

select id, name from student where month='201709';

4)多插入模式(根據多張表查詢結果)

from student

insert overwrite table student partition(month='201707')

select id, name where month='201709'

insert overwrite table student partition(month='201706')

select id, name where month='201709';

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

根據查詢結果建立表(查詢的結果會新增到新建立的表中)

create table if not exists student3

as select id, name from student;

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

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

create table if not exists student5(

id int, name string

) row format delimited fields terminated by '\t'

location '/user/hive/warehouse/student5';

2)上傳資料到 hdfs 上

hive (default)> dfs -put /opt/module/datas/student.txt /user/hive/warehouse/student5;

3)查詢資料

hive (default)> select * from student5;

5 import 資料到指定 hive 表中

先用 export 匯出後,再將資料匯入。

hive (default)> import table student2 partition(month='201709') from '/user/hive/warehouse/export/student';

2 資料匯出

1 insert 匯出

1)將查詢的結果匯出到本地

insert overwrite local directory '/opt/module/datas/export/student' select * from student;

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

insert overwrite local directory '/opt/module/datas/export/student1'

row format delimited fields terminated by '\t'

collection items terminated by '\n'

select * from student;

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

insert overwrite directory '/user/joker/hive/warehouse/student2'

row format delimited fields terminated by '\t'

collection items terminated by '\n'

select * from student;

2 hadoop 命令匯出到本地

dfs -get /user/hive/warehouse/student/month=201709/000000_0 /opt/module/datas/export/student3.txt;

3 hive shell 命令匯出

基本語法:(hive -f/-e 執行語句或者指令碼 > file)

bin/hive -e 'select * from default.student;' > /opt/module/datas/export/student4.txt;

4 export 匯出到 hdfs 上

export table default.student to '/user/hive/warehouse/export/student';

5 sqoop 匯出

3 清除表中資料(truncate)

注意: truncate 只能刪除管理表,不能刪除外部表中資料

hive (default)> truncate table student;

Hive DML資料操作之資料匯出

1 將查詢的結果匯出到本地 無格式 hive default insert overwrite local directory opt module datas export student select from student 2 將查詢的結果格式化匯出到本地 帶格式 hive default ...

5)Hive(DML 資料操作語言)

資料匯入 向表中裝載資料 load 語法 load data local inpath opt module datas student.txt overwrite into table student partition month 2019 load data 表示載入資料 local 表示從本...

HIVE 總結 四 Hive DML資料操作

本篇總結hive操作的資料的語法語句,這是常用的sql語法,畢竟用的多的還是crud 語法 load data local inpath 資料的path overwrite into table student partition partcol1 val1,1 load data 表示載入資料 2...