裝載資料(load)
基本語法:
load
data
[local
] inpath 'filepath'
[overwrite]
into
table tablename [
partition
(partcol1=val1,
partcol2=val2 ...
)]
inpath:載入資料的路徑
overwrite:覆蓋表中已有資料;否則表示追加資料
partition:將資料載入到指定的分割槽
準備工作:
-- 建立表
create
table taba (
id int
, name string,
area string
)row format delimited fields
terminated
by','
;資料檔案(~
/data
/sourcea.txt):
1,fish1,sz
2,fish2,sh
3,fish3,hz
4,fish4,qd
5,fish5,sr
-- 拷貝檔案到 hdfs
hdfs dfs -put sourcea.txt data
/
-- 載入本地檔案到hive(taba)
load
data
local inpath '/home/hadoop/data/sourcea.txt'
into
table taba;
-- 檢查本地檔案還在
-- 載入hdfs檔案到hive(taba)
load
data inpath 'data/sourcea.txt'
into
table taba;
-- 檢查hdfs檔案,已經被轉移
-- 載入資料覆蓋表中已有資料
load
data inpath 'data/sourcea.txt'
overwrite into
table taba;
-- 建立表時載入資料
hdfs dfs -mkdir /
user
/hive/tabb
hdfs dfs -put sourcea.txt /
user
/hive/tabb
create
table tabb (
id int
, name string,
area string
)row format delimited fields
terminated
by','
location '/user/hive/tabb'
;
-- 建立分割槽表
create
table tabc (
id int
, name string,
area string
)partitioned by
(month string)
row format delimited fields
terminated
by','
;-- 插入資料
insert
into
table tabc
partition
(month
='202001'
)values(5
,'wangwu'
,'bj'),
(4,'lishi'
,'sh'),
(3,'zhangsan'
,'tj');
-- 插入查詢的結果資料
insert
into
table tabc partition
(month
='202002'
)select id, name, area from tabc where
month
='202001'
;-- 多表(多分割槽)插入模式
from tabc
insert overwrite table tabc partition
(month
='202003'
)select id, name, area where
month
='202002'
insert overwrite table tabc partition
(month
='202004'
)select id, name, area where
month
='202002'
;
-- 根據查詢結果建立表
create
table
ifnot
exists tabd
asselect
*from tabc;
這種方法只是把資料複製過來,對於c表的結構不複製(比如c表是分割槽表,d表只是乙個普通表
import
table student2 partition
(month
='201709'
)from
'/user/hive/warehouse/export/student'
;
insert overwrite local directory '/home/hadoop/data/tabc'
select
*from tabc;
insert overwrite local directory '/home/hadoop/data/tabc2'
row format delimited fields
terminated
by' '
select
*from tabc;
insert overwrite directory '/user/hadoop/data/tabc3'
row format delimited fields
terminated
by' '
select
*from tabc;
dfs -get /
user
/hive/warehouse/mydb.db/tabc/
month
=202001
/home/hadoop/
data
/tabc4
hive -e "select * from mydb.tabc"
> a.log
export table tabc to
'/user/hadoop/data/tabc4'
;-- export 匯出的資料,可以使用 import 命令匯入到 hive 表中
-- 使用 like tname建立的表結構與原表一致。create ... as select ... 結構可能不一致
-- create table tabf as select * from tabc ,c 是個分割槽表,但是使用這個方法建立的不是分割槽表,就是普通表
create
table tabe like tabc;
import
table tabe from''/
user
/hadoop/
data
/tabc4';
truncate
table tabe;
-- 以下語句報錯,外部表不能執行 truncate 操作
alter
table tabc set tblproperties(
"external"
="true");
truncate
table tabc;
小結: HQL 資料庫操作
1 建立資料庫 1.1 語法create database if notexists database name 指定庫名稱 comment database comment 庫批註 location hdfs path 指定庫的位置 with dbproperties property name ...
8 HQL操作之DML命令
資料操縱語言dml data manipulation language dml主要有三種形式 插入 insert 刪除 delete 更新 update 事務 transaction 是一組單元化操作,這些操作要麼都執行,要麼都不執行,是乙個不可分割的工作單元。事務具有的四個要素 原子性 atom...
HIVE的常用操作(HQL 語句
hive基本操作命令 建立資料庫 create database db name create database if not exists db name 建立乙個不存在的資料庫final 檢視資料庫 show databases 選擇性檢視資料庫 show databases like f.檢視...