5 HQL操作之 資料操作

2021-10-16 17:48:35 字數 4200 閱讀 7773

裝載資料(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.檢視...