我在hive中有一个数据库,大约有100个表。我想删除整个数据库在一个单一的镜头查询。我们怎样才能在Hive里做到这一点?
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;
它会在删除数据库之前删除相应的表。
3pmvbmvn2#
使用,
DROP DATABASE database_name CASCADE;
默认情况下,模式为 RESTRICT 如果数据库包含表,则阻止删除。
RESTRICT
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;'
3条答案
按热度按时间vc6uscn91#
一般语法如下:
默认行为是restrict,如果数据库不是空的,drop database将失败。要同时删除数据库中的表,请使用DROPDATABASE…with cascade选项。
1.删除没有表或空数据库的数据库:
2.删除包含表的数据库:
它会在删除数据库之前删除相应的表。
3pmvbmvn2#
使用,
默认情况下,模式为
RESTRICT
如果数据库包含表,则阻止删除。4ioopgfo3#
您可以使用以下命令:
在这种情况下,您使用的是旧版本的配置单元:首先从配置单元数据库中删除所有表和视图,然后删除数据库。您可以将下面的命令合并到shell脚本中执行。