hive幾種導入數據方式

load
語法: load data [local] inpath ‘xx’ into table 表名 partition()
local: 如果導入的文件在本地文件系統,需要加上local,使用put將本地上傳到hdfs
不加local默認導入的文件是在hdfs,使用mv將源文件移動到目標目錄

hadoop fs -put department /


load data inpath ‘/department’ into table deptpart3 partition(area=‘suzhou’);

insert
insert方式運行MR程序,通過程序將數據輸出到表目錄!
在某些場景,必須使用insert方式來導入數據:
①向分桶表插入數據
②如果指定表中的數據,不是以純文本形式存儲,需要使用insert方式導入

語法: insert into|overwrite table 表名 select xxx | values(),(),() 
            insert into: 向表中追加新的數據
            insert overwrite: 先清空表中所有的數據,再向表中添加新的數據
            
特殊情況: 多插入模式(從一張源表查詢,向多個目標表插入)
            from 源表
            insert xxxx  目標表  select xxx
            insert xxxx  目標表  select xxx
            insert xxxx  目標表  select xxx

舉例: from deptpart2
         insert into table deptpart1 partition(area='huaxi') select deptno,dname,loc
         insert into table deptpart1 partition(area='huaxinan') select deptno,dname,loc 
1
2
3
4
5
6
7
8
9
10
11
12
13

location
在建表時,指定表的location爲數據存放的目錄
create external table if not exists default.deptpart3(deptno int,
dname string,
loc int) PARTITIONED BY(area string)
row format delimited fields terminated by ‘\t’
location ‘hdfs://hadoop1:9000/deptpart3’;

導出
insert : 將一條sql運算的結果,插入到指定的路徑
語法: insert overwrite [local] directory ‘/opt/module/datas/export/student’
row format xxxx
select * from student;

export : 既能導出數據,還可以導出元數據(表結構)!
export會在hdfs的導出目錄中,生成數據和元數據!
導出的元數據是和RDMS無關!
如果是分區表,可以選擇將分區表的部分分區進行導出!

 語法:  export table 表名 [partition(分區信息) ] to 'hdfspath'
1
export table deptpart1 partition(area=‘huazhong’) to ‘/export1’;


import
不僅可以導入數據還可以順便導入元數據(表結構)。Import只能導入export輸出的內容!

IMPORT [[EXTERNAL] TABLE 表名(新表或已經存在的表) [PARTITION (part_column=“value”[, …])]]
FROM ‘source_path’
[LOCATION ‘import_target_path’]
①如果向一個新表中導入數據,hive會根據要導入表的元數據自動創建表
②如果向一個已經存在的表導入數據,在導入之前會先檢查表的結構和屬性是否一致
只有在表的結構和屬性一致時,纔會執行導入
③不管表是否爲空,要導入的分區必須是不存在的

   import external table importtable1  from '/export1'
1

————————————————
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章