我在hive中有一个数据库,它有大约100个表。我想在单次查询中删除整个数据库。
我们如何在Hive中实现这一目标?
答案 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;
在删除数据库之前删除各个表。