删除配置单元中包含表的数据库

monwx1rj  于 2021-06-26  发布在  Hive
关注(0)|答案(3)|浏览(236)

我在hive中有一个数据库,大约有100个表。我想删除整个数据库在一个单一的镜头查询。
我们怎样才能在Hive里做到这一点?

vc6uscn9

vc6uscn91#

一般语法如下:

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

默认行为是restrict,如果数据库不是空的,drop database将失败。要同时删除数据库中的表,请使用DROPDATABASE…with cascade选项。
1.删除没有表或空数据库的数据库:

hive> DROP DATABASE database_name;

2.删除包含表的数据库:

hive> DROP DATABASE database_name CASCADE;

它会在删除数据库之前删除相应的表。

3pmvbmvn

3pmvbmvn2#

使用,

DROP DATABASE database_name CASCADE;

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

4ioopgfo

4ioopgfo3#

您可以使用以下命令:

DROP DATABASE IF EXISTS HIVE_DATABASE_NAME CASCADE;

在这种情况下,您使用的是旧版本的配置单元:首先从配置单元数据库中删除所有表和视图,然后删除数据库。您可以将下面的命令合并到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;'

相关问题