hive 學習系列二(數據庫的創建刪除修改) 拿走,不謝。


database

相當於一個目錄或者命名空間,用來更好地進行表的管理
在hdfs 的目錄位置大致如下:

[root@iZbp12vtv76y9q3d633bh6Z /]# hadoop fs -ls /user/hive/warehouse/
Found 14 items
drwxrwxrwx   - admin supergroup          0 2018-04-16 11:14 /user/hive/warehouse/action.db
drwxrwxrwx   - hdfs  supergroup          0 2018-06-06 02:09 /user/hive/warehouse/clean.db
drwxrwxrwx   - hdfs  supergroup          0 2018-05-14 14:22 /user/hive/warehouse/da.db
drwxrwxrwx   - admin supergroup          0 2018-06-06 11:25 /user/hive/warehouse/dimension.db
drwxrwxrwx   - admin supergroup          0 2018-03-20 14:14 /user/hive/warehouse/dp_life
drwxrwxrwx   - admin supergroup          0 2018-05-27 21:29 /user/hive/warehouse/dw.db
drwxrwxrwx   - admin supergroup          0 2018-05-04 16:14 /user/hive/warehouse/emp
drwxrwxrwx   - admin supergroup          0 2018-05-04 16:57 /user/hive/warehouse/fab_sama.db
drwxrwxrwx   - admin supergroup          0 2018-06-06 01:50 /user/hive/warehouse/final.db
drwxrwxrwx   - admin supergroup          0 2018-03-08 20:16 /user/hive/warehouse/label.db
drwxrwxrwx   - admin supergroup          0 2018-06-05 16:51 /user/hive/warehouse/location.db
drwxrwxrwx   - hdfs  supergroup          0 2018-06-02 14:02 /user/hive/warehouse/ods.db
drwxrwxrwx   - admin supergroup          0 2018-05-28 11:34 /user/hive/warehouse/pp_download.db
drwxrwxrwx   - admin supergroup          0 2018-05-29 14:23 /user/hive/warehouse/yunong_test.db
[root@iZbp12vtv76y9q3d633bh6Z /]# 

創建語法:


CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
  [COMMENT database_comment]
  [LOCATION hdfs_path]
  [WITH DBPROPERTIES (property_name=property_value, ...)];
DATABASE 和 SCHEMA 是一樣的概念。

例子:

create database if not exists demo 
comment 'demo db'
lacation '/user/hive/financials.db' 
with with dbproperties('creator' = 'lidiliang', 'date' = '2018-05-15');

刪除語法

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];

注意,默認drop table 時候是restrict 的,即數據庫里面存在表格的時候,如果刪除,會報錯。
需要強制刪除,請加上cascade

修改

語法:


ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...);   
-- (Note: SCHEMA added in Hive 0.14.0)
 
ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role;   
-- (Note: Hive 0.13.0 and later; SCHEMA added in Hive 0.14.0)
ALTER (DATABASE|SCHEMA) database_name SET LOCATION hdfs_path; 
-- (Note: Hive 2.2.1, 2.4.0 and later)

database 創建刪除修改語句例子

hive> create database mydatabase;   ## 創建數據庫
 hive> show databases;  ## 展示數據庫
 OK
 default
 mydatabase
 Time taken: 0.131 seconds, Fetched: 2 row(s)
 hive> create database mydatabase; ### 如果數據庫已經存在則會報錯
 FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask.
  Database mydatabase already exists
 hive> create database if not exists mydatabase;  ### 避免數據庫已經存在的時候,提示數據庫已經存在
 OK
 Time taken: 0.011 seconds
 hive> show databases;  ## 展示數據庫
 OK
 default
 mydatabase
 Time taken: 0.008 seconds, Fetched: 2 row(s)
 hive> create database if not exists helloworld;  ## 創建數據庫
 OK
 Time taken: 0.04 seconds
 hive> show databases like ".*";  ## 展示數據庫
 OK
 default
 helloworld
 mydatabase
 Time taken: 0.014 seconds, Fetched: 3 row(s)
 hive> show databases like "h.*";  ## 展示數據庫
 OK
 helloworld
 Time taken: 0.008 seconds, Fetched: 1 row(s)
 hive> create database financails location 'user/hive/financials.db'; ## locaation 后面應該跟的是絕對路徑
 FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: hdfs://localhost:9000./user/hive/financials.db)
 hive> create database financails location '/user/hive/financials.db';  ## location 指定db 目錄。
 OK
 Time taken: 0.037 seconds
 hive> create database financailsv1 location '/ldl/hive/financialsv1.db';  ## 如果目錄不存在會在hdfs 上進行自動創建
 OK
 Time taken: 0.035 seconds
 hive> create database  demo comment 'this is a demo databases';  ## 添加提示符號信息
 OK
 Time taken: 0.031 seconds
 hive> describe database demo;     ## 描述數據庫創建信息
 OK
 demo	this is a demo databases	hdfs://localhost:9000/user/hive/warehouse/demo.db	root	USER	
 Time taken: 0.011 seconds, Fetched: 1 row(s)
 hive> create database demov1 with dbproperties('creator' = 'lidiliang', 'date' = '2018-05-15');
 OK      #### 創建數據庫的時候,指定額外的信息
 Time taken: 0.049 seconds
 hive> describe database demov1; ### 描述數據的創建流程
 OK
 demov1		hdfs://localhost:9000/user/hive/warehouse/demov1.db	root	USER	
 Time taken: 0.013 seconds, Fetched: 1 row(s)
 hive> describe database extended demov1;  ## 如果需要看到dbproperties 設置的信息,需要添加extended 信息。
 OK
 demov1		hdfs://localhost:9000/user/hive/warehouse/demov1.db	root	USER	{date=2018-05-15, creator=lidiliang}
 Time taken: 0.011 seconds, Fetched: 1 row(s)
 hive> use default;
 OK
 Time taken: 0.037 seconds
 hive> set hive.cli.print.current.db=true;  ## 在當前命令行里面顯示當前使用的數據庫名稱
 hive (default)> use demov1;
 OK
 Time taken: 0.01 seconds
 hive (demov1)> set  hive.cli.print.current.db=false;
 hive> drop database hehe;  ## 刪除數據庫
 FAILED: SemanticException [Error 10072]: Database does not exist: hehe
 hive> drop database if exists hehe;  ## 刪除數據庫,可以避免數據庫不存在的時候的報錯。
 OK
 Time taken: 0.005 seconds
 hive> drop database if exists hehe cascade;   ## 刪除數據庫的
 ##前提是數據庫里面沒有表格,如果有表格,則會報錯,可以加上cascade 來進行新刪除數據庫里面的表格。
 OK
 Time taken: 0.005 seconds
 ## 以下是數據庫修改
 hive> alter database demov1 set dbproperties('edited-by' = 'lidiliang', 'edit-date'='2018-05-15-09-17');
 OK
 Time taken: 0.034 seconds
 hive> 


免責聲明!

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



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