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.
使用
级联,你可以直接删除这个数据库(不需要手动删除它的内容),如下所示。
[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 的数据库。
执行查询后,将光标轻轻移动到下拉菜单的顶部。然后,您会找到一个刷新符号,如下面的屏幕截图所示。如果单击刷新符号,将刷新数据库列表,并将对其应用最近所做的更改。
验证
点击编辑器左侧
DATABASE 标题下的
下拉。在那里,您可以看到系统中的数据库列表。在这里可以观察到新创建的数据库
my_db如下图。
如果仔细观察,列表中只有一个数据库,即
my_db以及默认数据库。