- 表特定语句
- Impala - 创建表语句
- Impala - 插入语句
- Impala - 选择语句
- Impala - 描述语句
- Impala - 修改表
- Impala - 删除表
- Impala - 截断表
- Impala - 显示表
- Impala - 创建视图
- Impala - 修改视图
- Impala - 删除视图
- Impala - 子句
- Impala - ORDER BY 子句
- Impala - GROUP BY 子句
- Impala - HAVING 子句
- Impala - LIMIT 子句
- Impala - OFFSET 子句
- Impala - UNION 子句
- Impala - WITH 子句
- Impala - DISTINCT 运算符
- Impala 有用资源
- Impala - 快速指南
- Impala - 有用资源
- Impala - 讨论
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 的数据库。
执行查询后,将光标轻轻移至下拉菜单的顶部。然后,您会找到一个刷新符号,如下面的屏幕截图所示。如果单击刷新符号,数据库列表将刷新,并且所做的最新更改将应用于它。
验证
单击编辑器左侧“**数据库**”标题下的 **下拉** 菜单。在那里,您可以看到系统中数据库的列表。在这里,您可以看到新创建的数据库 **my_db**,如下所示。
如果您仔细观察,您会发现列表中只有一个数据库,即 **my_db** 以及默认数据库。