Impala 简明教程

Impala - Drop a Database

Impala 的 DROP DATABASE Statement 用于从 Impala 中删除数据库。在删除数据库之前,建议先从数据库中移除所有表。

Syntax

以下是 DROP DATABASE 语句的语法。

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

此处, IF EXISTS 是一个可选子句。如果我们在具有给定名称的数据库存在时使用此子句,则将删除该数据库。如果没有具有给定名称的现有数据库,则不会执行任何操作。

Example

以下是 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 Statement 删除此数据库,如下所示。

 < DROP DATABASE IF EXISTS sample_database;

这将删除指定的数据库并给您以下输出。

Query: drop DATABASE IF EXISTS sample_database;

Verification

您可以使用 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] >

Cascade

通常,要删除数据库,您需要手动删除其中的所有表。如果您使用级联,Impala 会在删除指定数据库之前删除数据库中的表。

Example

假设 Impala 中有一个名为 sample 的数据库,它包含两个表,即 studenttest 。如果您尝试直接删除此数据库,您将收到如下所示的错误。

[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

Note − 您不能在 Impala 中删除 “ current database ”。因此,在删除数据库之前,您需要确保当前上下文已设置为要删除的数据库以外的数据库。

Deleting a Database using Hue Browser

打开 Impala 查询编辑器,并在其中键入 DELETE DATABASE 语句,然后单击执行按钮,如下所示。假设有三个数据库,即 my_db, my_databasesample_database 以及默认数据库。此处我们正在删除名为 my_database 的数据库。

delete database

执行查询后,轻轻将光标移动到下拉菜单的顶部。然后,您将找到一个刷新符号,如下面的截图所示。如果您单击刷新符号,数据库列表将被刷新,并且所做的最新更改将应用于该列表。

list databases refreshed

Verification

单击编辑器左侧标题 DATABASE 下的 drop down 。在那里,您可以看到系统中数据库的列表。此处您可以观察到新创建的数据库 my_db ,如下所示。

drop down

如果你仔细观察,可以看到列表中只有一个数据库,即 my_db 连同默认数据库。