Impala - 刪除資料庫



Impala 的 **DROP DATABASE 語句** 用於從 Impala 中刪除資料庫。在刪除資料庫之前,建議先刪除其中的所有表。

語法

以下是 **DROP DATABASE** 語句的語法。

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

這裡,**IF EXISTS** 是一個可選子句。如果我們在給定名稱的資料庫存在時使用此子句,則該資料庫將被刪除。如果不存在具有給定名稱的資料庫,則不執行任何操作。

示例

以下是 **DROP DATABASE** 語句的一個示例。假設您在 Impala 中有一個名為 **sample_database** 的資料庫。

並且,如果您使用 **SHOW DATABASES** 語句驗證資料庫列表,您將在其中看到該名稱。

[quickstart.cloudera:21000] > SHOW DATABASES;

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

現在,您可以使用如下所示的 **DROP DATABASE 語句** 刪除此資料庫。

 < DROP DATABASE IF EXISTS sample_database;

這將刪除指定的資料庫並給出以下輸出。

Query: drop DATABASE IF EXISTS sample_database;

驗證

您可以使用 **SHOW DATABASES** 語句驗證給定資料庫是否已刪除。在這裡,您可以觀察到名為 **sample_database** 的資料庫已從資料庫列表中刪除。

[quickstart.cloudera:21000] > SHOW DATABASES;

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

級聯

通常,要刪除資料庫,您需要手動刪除其中的所有表。如果您使用級聯,Impala 會在刪除資料庫之前刪除指定資料庫中的表。

示例

假設 Impala 中有一個名為 **sample** 的資料庫,它包含兩個表,即 **student** 和 **test**。如果您嘗試直接刪除此資料庫,您將收到如下所示的錯誤。

[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.

使用 **cascade**,您可以直接刪除此資料庫(無需手動刪除其內容),如下所示。

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

**注意** - 您無法在 Impala 中刪除“**當前資料庫**”。因此,在刪除資料庫之前,您需要確保當前上下文設定為除要刪除的資料庫之外的其他資料庫。

使用 Hue 瀏覽器刪除資料庫

開啟 Impala 查詢編輯器,並在其中鍵入 **DELETE DATABASE** 語句,然後單擊執行按鈕,如下所示。假設有三個資料庫,即 **my_db、my_database** 和 **sample_database** 以及預設資料庫。這裡我們刪除名為 my_database 的資料庫。

Delete Database

執行查詢後,將游標輕輕移至下拉選單的頂部。然後,您會找到一個重新整理符號,如下面的螢幕截圖所示。如果單擊重新整理符號,資料庫列表將重新整理,並且所做的最新更改將應用於它。

Database List

驗證

單擊編輯器左側“**資料庫**”標題下的 **下拉** 選單。在那裡,您可以看到系統中資料庫的列表。在這裡,您可以看到新建立的資料庫 **my_db**,如下所示。

Drop Down

如果您仔細觀察,您會發現列表中只有一個數據庫,即 **my_db** 以及預設資料庫。

廣告