Hive資料匯入與匯出

2022-08-20 22:33:11 字數 2786 閱讀 8600

hive四種資料匯入方式:

1)從本地檔案系統中匯入資料到hive表;

hive>load datalocal inpath'mytable.txt' into table mytabl;

注意:和我們熟悉的關係型資料庫不一樣,hive現在還不支援在insert語句裡面直接給出一組記錄的文字形式,也就是說,hive並不支援insert into …. values形式的語句。

2)hdfs上匯入資料到hive表;

從本地檔案系統中將資料匯入到hive表的過程中,其實是先將資料臨時複製到hdfs的乙個目錄下(典型的情況是複製到上傳使用者的hdfs home目錄下,比如/home/wyp/),然後再將資料從那個臨時目錄下移動(注意,這裡說的是移動,不是複製!)到對應的hive表的資料目錄裡面。既然如此,那麼hive肯定支援將資料直接從hdfs上的乙個目錄移動到相應hive表的資料目錄下,假設有下面這個檔案/home/wyp/add.txt,具體的操作如下:

hive>load datainpath'/home/wyp/add.txt' into table wyp;

和方式一的區別是沒有local這個單詞的。

3)從別的表中查詢出相應的資料並匯入到hive表中;

hive>insert into table test

>partition(age='25')

>select id ,name from wyp;

hive>insertoverwritetable test

>partition(age)

>select id ,name from wyp;

這種方法叫做動態分割槽插入,但是hive中預設是關閉的,所以在使用前需要先把hive.exec.dynamic.partition.mode設定為nonstrict。當然,hive也支援insert overwrite方式來插入資料,從字面我們就可以看出,overwrite是覆蓋的意思,是的,執行完這條語句的時候,相應資料目錄下的資料將會被覆蓋!而insert into則不會,注意兩者之間的區別。更可喜的是,hive還支援多表插入,什麼意思呢?在hive中,我們可以把insert語句倒過來,把from放在最前面,它的執行效果和放在後面是一樣的,如下:

hive>from wyp

>insert into table test

>partition(age)

>select id ,name

>insert into table test1

>partition(age)

>select id ,name

>where age>25;

4)在建立表的時候通過從別的表中查詢出相應的記錄並插入到所建立的表中。

在實際情況中,表的輸出結果可能太多,不適於顯示在控制台上,這時候,將hive的查詢輸出結果直接存在乙個新的表中是非常方便的,我們稱這種情況為ctas(create table .. as select)如下:

hive>create table test4

>as

>select id,name from wyp;

hive匯出資料三種方式:

1)   匯出到本地檔案系統;

hive>insert overwritelocaldirectory'/home/wyp/wyp'

>select * from wyp;

hive0.11.0版本引進了乙個新的特性,可以指定輸出結果列之間的分隔符:

hive>insert overwritelocaldirectory'/home/wyp/result

>row format delimited

>fields terminated by '\t'

>select * from wyp;

2)    匯出到hdfs;

hive>insert overwrite directory '/home/wyp/wyp'

>select * from wyp;

3)    匯出到hive的另乙個表中;

hive>insert into table test

>partition (age='25')

>select id,name from wyp;

其實,我們還可以用hive的-e和-f引數來匯出資料。其中-e 表示後面直接接帶雙引號的sql語句;而-f是接乙個檔案,檔案的內容為乙個sql語句,如下:

#hive -e "select * from wyp" >> local/wyp.txt

# hive -f wyp.sql >> local/wyp2.txt

Hive 匯入匯出資料

將檔案中的資料載入到表中 load data local inpath examples files kv1.txt overwrite into table pokes 載入本地資料,同時給定分割槽資訊 load data local inpath examples files kv2.txt o...

hive資料匯入匯出

hive官方提供兩種匯入資料的方式 1 從表中匯入 insert overwrite table test select from test2 2 從檔案匯入 2.1 從本地檔案匯入 load data local inpath hadoop aa.txt overwrite into table ...

HIVE資料的匯入與匯出詳解

load data local inpath overwrite into database.table partition partcol val 原始檔案在linux本地 加上local 如果原始資料檔案在hdfs 不用local 如果是覆蓋資料加上overwrite 如果是追加 不要overw...