DML資料操作

2021-10-19 08:00:08 字數 4734 閱讀 1794

示例

hive本地檔案系統匯入資料到hdfs的hive表

hive>

load

data

local inpath '/data/st.txt'

into

table st;

hive>

select

*from st;

hdfs檔案匯入到hdfs的hive表
#hdfs有檔案

hive>

load

data inpath '/hive/data/st.txt'

into

table st;

hive>

select

*from st;

#hdfs上沒有檔案,可以先從hive上傳檔案到hdfs,然後再匯入表

hive> dfs -put /

data

/st.txt /hive/

data/;

hive>

load

data inpath '/hive/data/st.txt' overwrite into

table st;

#覆蓋hive>

select

*from st;

建表並制定hdfs上的位置,然後put本地資料入錶
hive>

create

table

ifnot

exists st1(id int

,name string)

row format delimited fields

terminated

by'\t' location '/hive/data/st1'

;hive> dfs -put '/data/st.txt'

'/hive/data/st1'

;hive>

select

*from st1;

直接插入資料
hive>

insert

into

table st values(1

,'cindy');

hive>

select

*from st;

查詢其他表資料匯入hive表
hive>

insert

into

table st partition

(month

=『202001』)

select id,name from hive_test where

month

='202001'

;#單錶查詢

hive>

select

*from st;

hive>

insert overwrite table st select id,name from hive_test union

select id,name from hive_test1;

#多表查詢

hive>

select

*from st;

通過查詢其他表建表
hive>

create

table

ifnot

exists st1 as

select

*from st;

hive>

select

*from st1;

insert overwrite [local] directory 『路徑』 row format delimited fields terminated by row_format select * from table_name;

示例匯出到本地

hive>

insert overwrite local directory '/data/st'

row format delimited fields

terminated

by'\t'

select

*from st;

[root@hadoop01 /]

cd /data

[root@hadoop01 data] ll

[root@hadoop01 data]

cd st

[root@hadoop01 st] ll

[root@hadoop01 st]

cat 000000_0

匯出到hdfs
hive>

insert overwrite directory '/hive/data/st'

row format delimited fields

terminated

by'\t'

select

*from st;

[root@hadoop01 /] hadoop fs -cd /hive/data

[root@hadoop01 data] hadoop fs -ll

[root@hadoop01 data] hadoop fs -cd st

[root@hadoop01 st] hadoop fs -ll

[root@hadoop01 st] hadoop fs -cat 000000_0

hadoop命令get資料到本地

匯出庫表資料時,先導出到hadoop,再get到本地,不要直接get庫表到本地,否則會亂碼

[root@hadoop01 /] hadoop fs -get /user/hive/warehouse/hive_test/month=202001 /

data

/test.txt

[root@hadoop01 /]

cat/

data

/test.txt

用hive互動命令匯出資料到本地
[root@hadoop01 /] hive -e 'select * from test.hive_test' > /

data

/test.txt

[root@hadoop01 /]

cat/

data

/test.txt

查詢都是類sql,排序重點了解一下 示例

mapreduce內部排序

hive>

set mapreduce.job.reduces=3;

#設定mapreduce任務的個數

hive>

show mapreduce.job.reduces;

#顯示mapreduce任務的個數

hive>

select

*from st sort by id;

#直接查詢看不到結果,因為他是三個reduce,會產生三個檔案

hive>

insert overwrite local directory '/data/st_sortby'

select

*from st sort by id desc

;#將結果匯入本地路徑,檢視檔案

[root@hadoop01 /]

cd /data/st_sortby

[root@hadoop01 /] ll

[root@hadoop01 /]

cat 000000_0

[root@hadoop01 /]

cat 000001_0

[root@hadoop01 /]

cat 000002_0

mapreduce內部排序+分割槽排序
hive>

insert overwrite local directory '/data/st_distributeby'

select

*from st distribute by id sort by id desc

;#按mapreduce內部排序,且按照每個檔案內的id降序

[root@hadoop01 /]

cd /data/st_distributeby

[root@hadoop01 /] ll

[root@hadoop01 /]

cat 000000_0

[root@hadoop01 /]

cat 000001_0

[root@hadoop01 /]

cat 000002_0

cluster by公升序
hive>

insert overwrite local directory '/data/st_distributeby'

select

*from st cluster by id;

#按mapreduce內部排序,且按照每個檔案內的id公升序

[root@hadoop01 /]

cd /data/st_distributeby

[root@hadoop01 /] ll

[root@hadoop01 /]

cat 000000_0

[root@hadoop01 /]

cat 000001_0

[root@hadoop01 /]

cat 000002_0

全量刪除

部分刪除

DML 資料操作語言

本小白日常oracle學習總結,若有錯誤望海涵,並希望大神能指點迷津 開發中使用的部分 主要指資料庫的查詢與更新 例如 select,update,查詢該使用者下的所有表 select from tab查詢某乙個表的表結構 desc 表名 select子句中可以直接使用四則運算 select子句對應...

DML 資料操作語言

dml的具體內容 1.插入資料 名字sql語句 注意說明 完全插入 insert into 表名 列名1,列名2,values 列值1,列值2,在表名後給出要插入的列名,在values後面給出列值,值得順序和個數必須與前面指定的列對應。不完全插入 insert into 表名 列名1 values ...

資料操作語言 DML

插入語句 insert 修改語句 update 刪除語句 delete 簡介 插入語句 語法 insert into 表名 列名.values 值.注意 插入的值的型別必須與列的型別一致或相容。不可以為null的列必須插入值,可以為null的值插入資料時列和值都不寫,如果列有的話用null值填充。列...