Hive筆記之數據庫操作


 

創建數據庫

hive創建數據庫的最簡單寫法和mysql差不多:

create database foo;

僅當名為foo的數據庫當前不存在時才創建:

create database if not exists foo;

創建數據庫時指定位置,這個位置一般是在hdfs上的位置:

create database foo location '/db/foo';

 

查看已經創建的數據庫:

show databases ;

使用通配符查看foo開頭的數據庫:

show databases like 'foo.*';

 

查看創建數據庫的語句:

show create database foo ;

image

hive為每一個數據庫創建一個目錄,這個數據庫中的表將會以子目錄的形式放在這個數據庫目錄下

有一個例外就是default數據庫中的表,default數據庫沒有自己的目錄,所以是直接放在/user/hive/warehouse下面的:

image 

同樣的,當創建數據庫如果沒有指定存儲位置,默認就是在/user/hive/warehouse/下的:

image

 

數據庫描述信息

在創建數據庫時可以指定描述性信息:

create database foo comment 'this is foo database';

通過describe database可以查看到數據庫的詳細信息:

describe database foo;

image

 

數據庫鍵值對信息

數據庫可以有一些描述性的鍵值對信息,在創建時添加:

create database foo with dbproperties ('own'='cc', 'day'='20180120');

查看數據庫的鍵值對信息:

describe database extended foo;

image

要修改數據庫的鍵值對信息:

alter database foo set dbproperties ('k1'='v1', 'k2'='v2');

image

 

刪除數據庫

drop database if exists foo;

 

注意:

默認情況下是不允許直接刪除一個有表的數據庫的:

image

刪除一個有表的數據庫有兩種辦法:

1. 先把表刪干凈,再刪庫。

2. 刪庫時在后面加上cascade,表示級聯刪除此數據庫下的所有表:

drop database if exists foo cascade;

 

prompt顯示當前數據庫名稱

如果在一個數據庫很多的環境下工作,需要 在不同的庫之間切來切去(手動敲查詢的時候全使用dbName.table可不是什么好主意…),可能一不小心就忘記自己當前在哪個數據庫下了,可以通過設置一個屬性改變當前的命令提示符,更專業的說法是prompt(用過CLI界面的應該對這個概念很熟悉),通過設置hive.cli.print.current.db屬性可以在hive cli中顯示當前數據庫的名稱,比如當前的數據庫名稱是foo:

set hive.cli.print.current.db=true

image

 

.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM