Импала - Удалить базу данных

В DROP DATABASE StatementImpala используется для удаления базы данных из Impala. Перед удалением базы данных рекомендуется удалить из нее все таблицы.

Синтаксис

Ниже приводится синтаксис DROP DATABASE Утверждение.

DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT | 
CASCADE] [LOCATION hdfs_path];

Вот, IF EXISTSявляется необязательным предложением. Если мы используем это предложение, когда база данных с заданным именем существует, она будет удалена. А если базы данных с таким именем не существует, операция не выполняется.

пример

Ниже приводится пример DROP DATABASEзаявление. Предположим, у вас есть база данных в Impala с именемsample_database.

И, если вы проверите список баз данных с помощью SHOW DATABASES заявление, вы увидите в нем имя.

[quickstart.cloudera:21000] > SHOW DATABASES;

Query: show DATABASES
+-----------------------+ 
| name                  | 
+-----------------------+ 
| _impala_builtins      | 
| default               | 
| my_db                 | 
| sample_database       | 
+-----------------------+ 
Fetched 4 row(s) in 0.11s

Теперь вы можете удалить эту базу данных, используя DROP DATABASE Statement как показано ниже.

< DROP DATABASE IF EXISTS sample_database;

Это приведет к удалению указанной базы данных и даст вам следующий результат.

Query: drop DATABASE IF EXISTS sample_database;

Проверка

Вы можете проверить, удалена ли данная база данных, используя SHOW DATABASESзаявление. Здесь вы можете заметить, что база данных с именемsample_database удаляется из списка баз данных.

[quickstart.cloudera:21000] > SHOW DATABASES;

Query: show DATABASES 
+----------------------+ 
| name                 | 
+----------------------+ 
| _impala_builtins     | 
| default              | 
| my_db                | 
+----------------------+ 
Fetched 3 row(s) in 0.10s 
[quickstart.cloudera:21000] >

Каскад

В общем, чтобы удалить базу данных, вам нужно удалить все таблицы в ней вручную. Если вы используете каскад, Impala удаляет таблицы в указанной базе данных перед ее удалением.

пример

Предположим, в Импале есть база данных с именем sample, и содержит две таблицы, а именно student и test. Если вы попытаетесь удалить эту базу данных напрямую, вы получите сообщение об ошибке, как показано ниже.

[quickstart.cloudera:21000] > DROP database sample;
Query: drop database sample 
ERROR: 
ImpalaRuntimeException: Error making 'dropDatabase' RPC to Hive Metastore: 
CAUSED BY: InvalidOperationException: Database sample is not empty. One or more 
tables exist.

С помощью cascade, вы можете удалить эту базу данных напрямую (без удаления ее содержимого вручную), как показано ниже.

[quickstart.cloudera:21000] > DROP database sample cascade; 
Query: drop database sample cascade

Note - Вы не можете удалить «current database»В Импале. Следовательно, перед удалением базы данных вам необходимо убедиться, что текущий контекст установлен для базы данных, отличной от той, которую вы собираетесь удалить.

Удаление базы данных с помощью Hue Browser

Откройте редактор запросов Impala и введите DELETE DATABASEв нем и нажмите кнопку выполнения, как показано ниже. Предположим, есть три базы данных, а именно,my_db, my_database, и sample_databaseвместе с базой данных по умолчанию. Здесь мы удаляем базу данных с именем my_database.

После выполнения запроса аккуратно переместите курсор в верхнюю часть раскрывающегося меню. Затем вы найдете символ обновления, как показано на скриншоте ниже. Если вы нажмете на символ обновления, список баз данных будет обновлен, и к нему будут применены последние сделанные изменения.

Проверка

Нажми на drop down под заголовком DATABASEв левой части редактора. Здесь вы можете увидеть список баз данных в системе. Здесь вы можете наблюдать за вновь созданной базой данныхmy_db как показано ниже.

Если вы внимательно понаблюдаете, вы увидите только одну базу данных, т.е. my_db в списке вместе с базой данных по умолчанию.