Hive之DDL詳解

官網:http://hive.apache.org
在這裏插入圖片描述

1、Hive的DDL

對於DML語言,我們不講,因爲實際工作Hive1.x版本 DML性能太差,基本是用Spark實現;雖然現在Hive2.x支持Spark引擎,但是使用的人還是比較少。
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL
HiveQL DDL:

  • CREATE DATABASE/SCHEMA, TABLE, VIEW, FUNCTION, INDEX
  • DROP DATABASE/SCHEMA, TABLE, VIEW, INDEX
  • TRUNCATE TABLE
  • ALTER DATABASE/SCHEMA, TABLE, VIEW
  • MSCK REPAIR TABLE (or ALTER TABLE RECOVER PARTITIONS)
  • SHOW DATABASES/SCHEMAS, TABLES, TBLPROPERTIES, VIEWS, PARTITIONS, FUNCTIONS, INDEX[ES], COLUMNS, CREATE TABLE
  • DESCRIBE DATABASE/SCHEMA, TABLE_NAME, VIEW_NAME

數據庫操作

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name  
[COMMENT database_comment]
[LOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];  #[]表示可有可無
 
CREATE DATABASE hive; #創建數據庫
desc database hive;  #查看數據庫存儲數據目錄信息的等
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE]; #刪除數據庫
USE database_name; 使用數據庫

數據庫元數據查詢

mysql -uroot -p  #登錄mysql
show databases;
use ruoze_d6
show tablses;
select * from dbs \G  #查看有hive有哪些數據庫,\G表示格式化輸出

表的操作

#創建員工1信息表,並指定行的格式
create table emp(
empno int,
ename string,
job string,
mgr int,
hiredate string,
sal double,
comm double,
deptno int
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; 
#加載數據入員工表,local 表示數據從本地獲取,未指定則是指hdfs,這是DML語法
LOAD DATA LOCAL INPATH '/home/hadoop/data/emp.txt' OVERWRITE INTO TABLE emp ;
 
#創建員工2拷貝表結構
CREATE TABLE emp2 LIKE emp;
 
#創建員工3拷貝表結構以及表數據,需要跑MR
create table emp3 as select * from emp;
 
 
#創建外部表,用external修飾,其它語法與內部表一致
create external table emp4 like emp;
 
#查看錶的結構
desc emp; #查看錶的簡單信息
desc formatted emp; #查看錶的詳細信息
drop table emp2 #刪除表
alter table emp rename to new_emp; #重名了表

我們可以通過 hive -e “sql 命令”來執行,可以寫在shell腳本里面,然後執行shell腳本。
或者是通過 hive -f SQL文件(文件裏面就是SQL語句) 這種方式來編寫腳本的。

hive sql有些字符需要用“\”進行轉義,列如用“.”切割時,得寫成“\.”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章