Hive DML(資料匯入匯出)
阿新 • • 發佈:2018-11-17
DML
DML:Data Manipulation Language(資料管理語言)
載入資料到表
語法
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
從本地載入資料
LOAD DATA LOCAL INPATH '/home/hadoop/data/dept.txt' INTO TABLE ruoze_dept;
使用overwrite載入資料
在載入資料的時候,如果沒有加上overwite 關鍵字的話 會重複 載入
所以一般在工作中,載入資料的時候一定是要加上overwirte的
LOAD DATA LOCAL INPATH '/home/hadoop/data/dept.txt' OVERWRITE INTO TABLE ruoze_dept;
從hdfs上載入資料
從hdfs上載入資料 只需要去掉 local 即可,其他一致的
LOAD DATA INPATH '/data/dept.txt' OVERWRITE INTO TABLE ruoze_dept;
檢視下hdfs上的檔案
檢視hive中資料
這裡需要注意的是如果從hdfs上載入資料,執行第二次的時候,是會有錯誤的
錯誤日誌提示檔案不存在了,檢視hdfs
果然沒有了,這裡細想一下可以理解的,因為hive的內部表的元資料資訊和資料都是有hive自己管理的,所以我們從hdfs中載入完資料之後,會將hdfs上的目錄移動到hive的資料倉庫對應的資料庫中
根據查詢語句插入資料
INSERT OVERWRITE TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...) [IF NOT EXISTS]] select_statement1 FROM from_statement; INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;
INSERT OVERWRITE TABLE ruoze_dept_test select deptno ,dname ,loc from ruoze_dept;
注意 不能插入資料順序不能錯,欄位數要一致
從hive中寫出資料
INSERT OVERWRITE [LOCAL] DIRECTORY directory1
[ROW FORMAT row_format] [STORED AS file_format] (Note: Only available starting with Hive 0.11.0)
SELECT ... FROM ...
執行匯出語句
INSERT OVERWRITE LOCAL DIRECTORY '/home/hadoop/data/hive_test'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
SELECT empno,ename FROM ruoze_emp;
檢視結果