向hive中load資料

2021-09-02 23:38:01 字數 1937 閱讀 4285

hive中如果有分割槽的話,如果是需要自己構造資料且不知道是否有分割槽,可以使用這條語句看是否有分割槽:

show create table tabletest;tabletest為需要看是否有分割槽的表,執行這條語句之後會有這樣一條出來:

partitioned by (******string) ,****** 即為分割槽的字段,string為該字段的資料型別,如果沒有列印這個語句的話證明這個表沒有分割槽。

簡單的建一張無分割槽的hive表:

create table mytest (student string,height int,grade int);

向這張表中load一條資料如下:

insert into table mytest select 'zhangsan',176,78;
或者

insert into table mytest values ('zhangsan1',176,78);
或者從別的表裡面查出資料load進去:

insert into table mytest select test1,test2,test3 from testtable ;
load之後如圖:

建一張有分割槽的表:

create table mytest (student string,height int,grade int) partitioned by (ymd string);

注意:如果使用以上的語句來load這張表的話就會報錯,如下:

向這張表load資料如下:

insert into table mytest partition (ymd='2018-12-11') values ('zhangsan1',176,78);
或者

insert into table mytest partition (ymd='2018-12-11') select 'zhangsan2',176,78;
load資料如下圖:

以下語句也是向表中load資料的:

insert overwrite table mytest partition (ymd='2018-12-11') select 'dddddd',176,78;
這條語句會把mytest表中所有的ymd='2018-12-11』的資料替換成本條語句load的資料結果,執行這條語句的結果如下:

insert into語句是向表中追加資料,insert overwrite是向表中替換資料。

還有這樣的寫法:

insert into table mytest partition (ymd) select 'testname',176,78;
不過這裡執行的話會報錯

參見提示,我們需要設定一下(直接在hive執行):set hive.exec.dynamic.partition.mode=nonstrict

簡單記錄一下,有幾篇比較好的文章推薦給大家:

hive中簡單介紹分割槽表(partition table),含動態分割槽(dynamic partition)與靜態分割槽

insert … values, update, and delete sql statements

hive靜態分割槽表&動態分割槽表

匯入資料到hive表中的6種方式

hive從查詢中獲取資料插入到表或動態分割槽

hive使用load載入資料1 0

安裝hive 直接操作hive create table if not exists l employee eid int,name string,salary string,destination string comment employee details row format delimit...

hive ,從hdfs把資料檔案load匯入到表

hive load data inpath hdfs ns1 abc sales info hello sales info.txt overwrite into table sales info partition dt 2019 04 26 1 原資料檔案 已經不存在了,是從原路徑移動到了新路徑...

hive內部表外部表的建立及load資料

create table test 01 id bigint,name string row format delimited fields terminated by 預設記錄和字段分隔符 n 每行一條記錄 a 分隔列 八進位制 001 b 分隔array或者struct中的元素,或者map中多個...