使用Hive中的表删除数据库

9 database hive

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

我们怎样才能在Hive中实现这一目标?

fra*_*ijo 17

使用,

DROP DATABASE database_name CASCADE;
Run Code Online (Sandbox Code Playgroud)

默认情况下,RESTRICT如果数据库包含表,则该模式将阻止删除数据库.


San*_*ngh 8

您可以使用此命令:

DROP DATABASE IF EXISTS HIVE_DATABASE_NAME CASCADE;
Run Code Online (Sandbox Code Playgroud)

如果您使用的是旧版本的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;'
Run Code Online (Sandbox Code Playgroud)


San*_*ngh 5

General syntax is as follows:

hive> DROP DATABASE [IF EXISTS] database_name [RESTRICT|CASCADE];
Run Code Online (Sandbox Code Playgroud)

默认行为是RESTRICT,如果数据库不为空,则DROP DATABASE将失败。要将表也拖放到数据库中,请使用带有CASCADE选项的DROP DATABASE…。

1.删​​除没有表的数据库或清空数据库:

hive> DROP DATABASE database_name;
Run Code Online (Sandbox Code Playgroud)

2.删除带有表的数据库:

hive> DROP DATABASE database_name CASCADE;
Run Code Online (Sandbox Code Playgroud)

它先删除相应的表,再删除数据库。