Hive DML 資料庫定義,表定義等操作

2021-10-05 17:24:23 字數 3561 閱讀 2532

1.語法

load data [local] inpath '/opt/module/datas/student.txt' [overwrite] | into table student [partition (partcol1=val1,…)];

(1)load data:表示載入資料

(2)local:表示從本地載入資料到 hive 表;否則從 hdfs 載入資料到 hive 表

(3)inpath:表示載入資料的路徑

(4)overwrite:表示覆蓋表中已有資料,否則表示追加

(5)into table:表示載入到哪張表

(6)student:表示具體的表

(7)partition:表示上傳到指定分割槽

2.實操案例

(1)建立一張表

create table student(id string, name string) row format delimited fields terminated by '\t';
(2)載入本地檔案到 hive

load data local inpath 'student.txt' into table student;
(3)載入 hdfs 檔案到 hive 中  上傳檔案到 hdfs

hive(test)> dfs -put 'student.txt' '/hive/student';

載入 hdfs 上資料

load data inpath '/hive/student.txt' into table student;

(4)載入資料覆蓋表中已有的資料上傳檔案到 hdfs

hive(test)> dfs -put 'student.txt' '/hive/student';

載入資料覆蓋表中已有的資料

load data inpath 'student.txt' overwrite into table student;

1.建立一張分割槽表

create table student_partition(id int, name string) partitioned by (month string) row format delimited fields terminated by '\t';
2.基本插入資料

insert into table student_partition partition(month='202005')values(1, 'zhangsan');

insert into table student_partition partition(month='202004')values(2, 'lisi');

3.基本模式插入(根據單張表查詢結果)

insert overwrite table student_partition partition(month='202005') select id, name from student_partition where month='202004';
4.多插入模式(根據多張表查詢結果)

多表插入的關鍵點在於將所要執行查詢的表語句 "from 表名",放在最開頭位置。

from student_partition

insert overwrite table student_partition partition(month='202005') select id,name where month = '202005'

insert overwrite table student_partition partition(month='202004') select id,name where month = '202005';

根據查詢結果建立表(查詢的結果會新增到新建立的表中)

create table if not exists student3 as select id, name from student_partition;
建立表時通過 location 指定載入資料路徑

1.建立表,並指定在 hdfs 上的位置

create table if not exists student5(id int, name string) 

row format delimited fields terminated by ' '  

location '/hive/student5';

2.上傳資料到 hdfs 上

hive> dfs -put student.txt /hive/student5;
3.查詢資料

hive> select * from student5;
注意:先用 export 匯出後,再將資料匯入。

hive> import table student5 partition(month='202005') from '/hive/student5';
1.將查詢的結果匯出到本地

insert overwrite local directory '/root/data' select * from student;
2.將查詢的結果格式化匯出到本地

insert overwrite local directory 'root/data' row format delimited fields terminated by '\t'

select * from student;

3.將查詢的結果匯出到 hdfs 上(沒有 local)

insert overwrite directory '/root/data' row format delimited fields terminated by '\t'

select * from student;

基本語法:(hive -f/-e 執行語句或者指令碼 > file)

[hive]$ bin/hive -e 'select * from default.student;' > /root/data/student4.txt;
export 匯出到 hdfs 上

export table student to '/hive/student';
注意:truncate 只能刪除管理表,不能刪除外部表中資料

truncate table student;

資料庫 資料定義

關係資料庫系統支援 模式結構,其模式 外模式和內模式中的基本物件有資料庫模式 表 索引 檢視等。響應的,sql的資料定義功能包括資料庫模式定義 表定義 索引定義和檢視定義。資料模式定義包括資料庫的建立 選擇 修改 刪除 檢視等操作。資料型別 指系統中所允許的資料的型別 資料庫模式定義 在mysql中...

資料庫基礎定義

資料庫 按照資料結構來組織 儲存和管理資料的建立在計算機儲存裝置上的倉庫。簡單來說是本身可視為電子化的檔案櫃 儲存電子檔案的處所,使用者可以對檔案中的資料進行新增 擷取 更新 刪除等操作。關聯式資料庫 建立在關係模型基礎上的資料庫,借助於集合代數等數學概念和方法來處理資料庫中的資料。如oracle,...

Flask SQLAlchemy定義資料庫模型

如果有兩張表role和user,那麼定義 role 和 user 模型 class role db.model tablename roles 表名 定義id列,型別為整型,flask sqlalchemy 要求每個模型都要定義主鍵,這一列經常命名為 id id db.column db.integ...