Impala 删除数据库
The 删除数据库语句 Impala 用于从 Impala 中删除数据库。在删除数据库之前,建议删除其中的所有表。
语法
以下是的语法 删除数据库 陈述。
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT | CASCADE] [LOCATION hdfs_path];
Here, 如果存在 是一个可选子句。如果我们在具有给定名称的数据库存在时使用此子句,那么它将被删除。如果没有具有给定名称的现有数据库,则不执行任何操作。
例子
下面是一个例子 删除数据库 陈述。假设你在 Impala 中有一个名为 样本数据库 .
并且,如果你使用 显示数据库 声明,你将观察其中的名称。
[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 IF EXISTS sample_database;
这将删除指定的数据库并为你提供以下输出。
Query: drop DATABASE IF EXISTS 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 会先删除指定数据库中的表,然后再删除它。
例子
假设在 Impala 中有一个名为 sample ,它包含两个表,即, student and 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.
Using cascade ,你可以直接删除该数据库(无需手动删除其内容),如下所示。
[quickstart.cloudera:21000] > DROP database sample cascade; Query: drop database sample cascade
注意 :不能删除“ 当前数据库 ”在Impala 。因此,在删除数据库之前,你需要确保当前上下文设置为你要删除的数据库以外的数据库。
使用 Hue 浏览器删除数据库
打开 Impala 查询编辑器并输入 删除数据库 在其中声明并单击执行按钮,如下所示。假设有三个数据库,即 我的数据库,我的数据库 , and 样本数据库 以及默认数据库。这里我们要删除名为 my_database 的数据库。
执行查询后,将光标轻轻移动到下拉菜单的顶部。然后,你将找到一个刷新符号,如下面的屏幕截图所示。如果单击刷新符号,数据库列表将被刷新,最近所做的更改将应用于它。
确认
点击 落下 在标题下 DATABASE 在编辑器的左侧。在那里,你可以看到系统中的数据库列表。在这里可以观察到新创建的数据库 my_db 如下所示。
如果你仔细观察,你只能看到一个数据库,即, my_db 与默认数据库一起在列表中。