web-dev-qa-db-fra.com

Supprimer une base de données avec des tables dans Hive

J'ai une base de données dans Hive qui contient environ 100 tables. Je voudrais supprimer toute la base de données en une seule requête.

Comment pouvons-nous y parvenir dans Hive?

9
user7351648

Utilisation,

DROP DATABASE database_name CASCADE;

Par défaut, le mode est RESTRICT qui bloque la suppression de la base de données si elle contient des tables.

17
franklinsijo

Vous pouvez utiliser cette commande:

DROP DATABASE IF EXISTS Hive_DATABASE_NAME CASCADE;

Dans le cas où vous utilisez une ancienne version de Hive: supprimez d'abord toutes les tables et vues de la base de données Hive, puis supprimez la base de données. Vous pouvez consolider la commande ci-dessous dans un script Shell à exécuter.

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;'
8
Sandeep Singh

La syntaxe générale est la suivante:

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

Le comportement par défaut est RESTRICT, où DROP DATABASE échouera si la base de données n'est pas vide. Pour supprimer également les tables dans la base de données, utilisez DROP DATABASE… avec l'option CASCADE.

1. Supprimer la base de données sans table ou base de données vide:

Hive> DROP DATABASE database_name;

2. Supprimez la base de données avec des tables:

Hive> DROP DATABASE database_name CASCADE;

Il supprime les tables respectives avant de supprimer la base de données.

5
Santosh Singh