使用Hive中的表删除数据库

时间:2017-02-09 06:39:46

标签: database hive

我在hive中有一个数据库,它有大约100个表。我想在单次查询中删除整个数据库。

我们如何在Hive中实现这一目标?

3 个答案:

答案 0 :(得分:13)

使用,

DROP DATABASE database_name CASCADE;

默认情况下,模式为RESTRICT,如果数据库保存表,则会阻止删除数据库。

答案 1 :(得分:7)

您可以使用此命令:

DROP DATABASE IF EXISTS HIVE_DATABASE_NAME CASCADE;

如果您使用的是旧版本的Hive: 首先从hive数据库中删除所有表和视图,然后删除数据库。您可以在shell脚本中合并以下命令来执行。

hive -e 'use HIVE_DATABASE_NAME;show tables' | xargs -I '{}' hive -e 'use HIVE_DATABASE_NAME;DROP TABLE IF EXISTS {}'

hive -e 'use HIVE_DATABASE_NAME;show tables' | xargs -I '{}' hive -e 'use HIVE_DATABASE_NAME;DROP VIEW IF EXISTS {}'

hive -e 'DROP DATABASE IF EXISTS HIVE_DATABASE_NAME;'

答案 2 :(得分:4)

一般语法如下:

hive> DROP DATABASE [IF EXISTS] database_name [RESTRICT|CASCADE];

默认行为是RESTRICT,如果数据库不为空,DROP DATABASE将失败。要删除数据库中的表,请使用DROP DATABASE ... with CASCADE选项。

<强> 1。删除没有表或空数据库的数据库:

hive> DROP DATABASE database_name;

<强> 2。使用表删除数据库:

hive> DROP DATABASE database_name CASCADE;

在删除数据库之前删除各个表。