標籤:
insert 文法格式為:
1. 基本的插入文法:
insert overwrite table tablename [partition(partcol1=val1,partclo2=val2)] select_statement;
insert into table tablename [partition(partcol1=val1,partclo2=val2)] select_statement;
eg:
insert overwrite table test_insert select * from test_table;
insert into table test_insert select * from test_table;
註:
overwrite重寫,into追加。
2. 對多個表進行插入操作:
from source_table
insert overwrite table tablename1 [partition (partcol1=val1,partclo2=val2)] select_statement1
insert overwrite table tablename2 [partition (partcol1=val1,partclo2=val2)] select_statement2
eg:
from test_table
insert overwrite table test_insert1
select key
insert overwrite table test_insert2
select value;
註:hive不支援用insert語句一條一條的進行插入操作,也不支援update操作。資料是以load的方式載入到建立好的表中,資料一旦匯入就不可以修改。
2.通過查詢將資料儲存到filesystem
insert overwrite [local] directory ‘directory‘ select_statement;
eg:
(1)匯入資料到本地目錄:
insert overwrite local directory ‘/home/hadoop/data‘ select * from test_insert1;
產生的檔案會覆蓋指定目錄中的其他檔案,即將目錄中已經存在的檔案進行刪除。
只能用overwrite,into錯誤!
(2)匯出資料到HDFS中:
insert overwrite directory ‘/user/hive/warehouse/table‘ select value from test_table;
只能用overwrite,into錯誤!
(3)同一個查詢結果可以同時插入到多個表或者多個目錄中:
from source_table
insert overwrite local directory ‘/home/hadoop/data‘ select *
insert overwrite directory ‘/user/hive/warehouse/table‘ select value;
3. 小結:
(1)insert命令主要用於將hive中的資料匯出,匯出的目的地可以是hdfs或本地filesysytem,匯入什麼資料在於書寫的select語句。
(2)overwrite與into:
insert overwrite/into table 可以搭配;
insert overwrite directory 可以搭配;
【轉】Hive的insert操作