impala 刪除數(shù)據(jù)庫(kù)

2018-01-03 16:35 更新

Impala的DROP DATABASE語(yǔ)句用于從Impala中刪除數(shù)據(jù)庫(kù)。 在刪除數(shù)據(jù)庫(kù)之前,建議從中刪除所有表。

語(yǔ)法

以下是DROP DATABASE語(yǔ)句的語(yǔ)法。

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

這里,IF EXISTS是一個(gè)可選子句。 如果我們?cè)诖嬖诰哂薪o定名稱(chēng)的數(shù)據(jù)庫(kù)時(shí)使用此子句,則它將被刪除。 如果沒(méi)有具有給定名稱(chēng)的現(xiàn)有數(shù)據(jù)庫(kù),則不執(zhí)行任何操作。

以下是DROP DATABASE語(yǔ)句的示例。 假設(shè)您在Impala中有一個(gè)名稱(chēng)為sample_database的數(shù)據(jù)庫(kù)。

并且,如果使用SHOW DATABASES語(yǔ)句驗(yàn)證數(shù)據(jù)庫(kù)列表,您將觀察其中的名稱(chēng)。

[quickstart.cloudera:21000] > SHOW DATABASES;

Query: show DATABASES
+-----------------------+ 
| name                  | 
+-----------------------+ 
| _impala_builtins      | 
| default               | 
| my_db                 | 
| sample_database       | 
+-----------------------+ 
Fetched 4 row(s) in 0.11s

現(xiàn)在,您可以使用DROP DATABASE語(yǔ)句刪除此數(shù)據(jù)庫(kù),如下所示。

 < DROP DATABASE IF EXISTS sample_database;

這將刪除指定的數(shù)據(jù)庫(kù),并給您以下輸出。

Query: drop DATABASE IF EXISTS sample_database;

驗(yàn)證

您可以使用SHOW DATABASES語(yǔ)句驗(yàn)證給定數(shù)據(jù)庫(kù)是否已刪除。 在這里,您可以觀察到名為sample_database的數(shù)據(jù)庫(kù)從數(shù)據(jù)庫(kù)列表中刪除。

[quickstart.cloudera:21000] > SHOW DATABASES;

Query: show DATABASES 
+----------------------+ 
| name                 | 
+----------------------+ 
| _impala_builtins     | 
| default              | 
| my_db                | 
+----------------------+ 
Fetched 3 row(s) in 0.10s 
[quickstart.cloudera:21000] >

級(jí)聯(lián)

一般來(lái)說(shuō),要?jiǎng)h除數(shù)據(jù)庫(kù),您需要手動(dòng)刪除其中的所有表。 如果使用級(jí)聯(lián),Impala會(huì)在刪除指定數(shù)據(jù)庫(kù)中的表之前刪除它。

假設(shè)在Impala中有一個(gè)數(shù)據(jù)庫(kù)命名為sample,它包含兩個(gè)表,即student和test。 如果您嘗試直接刪除此數(shù)據(jù)庫(kù),您將收到一個(gè)錯(cuò)誤,如下所示。

[quickstart.cloudera:21000] > DROP database sample;
Query: drop database sample 
ERROR: 
ImpalaRuntimeException: Error making 'dropDatabase' RPC to Hive Metastore: 
CAUSED BY: InvalidOperationException: Database sample is not empty. One or more 
tables exist.

使用級(jí)聯(lián),您可以直接刪除此數(shù)據(jù)庫(kù)(無(wú)需手動(dòng)刪除其內(nèi)容),如下所示。

[quickstart.cloudera:21000] > DROP database sample cascade; 
Query: drop database sample cascade

注意 - 您不能刪除Impala中的“當(dāng)前數(shù)據(jù)庫(kù)”。 因此,在刪除數(shù)據(jù)庫(kù)之前,需要確保將當(dāng)前上下文設(shè)置為除要?jiǎng)h除的數(shù)據(jù)庫(kù)之外的數(shù)據(jù)庫(kù)。

使用Hue瀏覽器刪除數(shù)據(jù)庫(kù)

打開(kāi)Impala查詢(xún)編輯器并在其中鍵入DELETE DATABASE語(yǔ)句,然后單擊執(zhí)行按鈕,如下所示。 假設(shè)有三個(gè)數(shù)據(jù)庫(kù),即my_db,my_database和sample_database以及默認(rèn)數(shù)據(jù)庫(kù)。 這里我們刪除名為my_database的數(shù)據(jù)庫(kù)。

刪除數(shù)據(jù)庫(kù)

執(zhí)行查詢(xún)后,輕輕將光標(biāo)移動(dòng)到下拉菜單的頂部。 然后,您將找到一個(gè)刷新符號(hào),如下面的屏幕截圖所示。 如果單擊刷新符號(hào),將刷新數(shù)據(jù)庫(kù)列表,并將對(duì)其應(yīng)用最近所做的更改。

數(shù)據(jù)庫(kù)列表

驗(yàn)證

單擊編輯器左側(cè)標(biāo)題DATABASE下的下拉菜單。 在那里,您可以看到系統(tǒng)中的數(shù)據(jù)庫(kù)列表。 這里可以觀察新創(chuàng)建的數(shù)據(jù)庫(kù)my_db,如下所示。

落下

如果仔細(xì)觀察,您只能看到一個(gè)數(shù)據(jù)庫(kù),即列表中的my_db以及默認(rèn)數(shù)據(jù)庫(kù)。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)