Impala的DROP DATABASE語(yǔ)句用于從Impala中刪除數(shù)據(jù)庫(kù)。 在刪除數(shù)據(jù)庫(kù)之前,建議從中刪除所有表。
以下是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;
您可以使用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] >
一般來(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ù)。
打開(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ù)。
執(zhí)行查詢(xún)后,輕輕將光標(biāo)移動(dòng)到下拉菜單的頂部。 然后,您將找到一個(gè)刷新符號(hào),如下面的屏幕截圖所示。 如果單擊刷新符號(hào),將刷新數(shù)據(jù)庫(kù)列表,并將對(duì)其應(yīng)用最近所做的更改。
單擊編輯器左側(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ù)。
更多建議: