Impala - Thả một cơ sở dữ liệu

Các DROP DATABASE Statementof Impala được sử dụng để xóa một cơ sở dữ liệu khỏi Impala. Trước khi xóa cơ sở dữ liệu, bạn nên xóa tất cả các bảng khỏi nó.

Cú pháp

Sau đây là cú pháp của DROP DATABASE Tuyên bố.

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

Đây, IF EXISTSlà một mệnh đề không bắt buộc. Nếu chúng ta sử dụng mệnh đề này khi một cơ sở dữ liệu với tên đã cho tồn tại, thì nó sẽ bị xóa. Và nếu không có cơ sở dữ liệu hiện có với tên đã cho, thì không có thao tác nào được thực hiện.

Thí dụ

Sau đây là một ví dụ về DROP DATABASEtuyên bố. Giả sử bạn có một cơ sở dữ liệu trong Impala với tênsample_database.

Và, nếu bạn xác minh danh sách cơ sở dữ liệu bằng cách sử dụng SHOW DATABASES bạn sẽ thấy tên trong đó.

[quickstart.cloudera:21000] > SHOW DATABASES;

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

Bây giờ, bạn có thể xóa cơ sở dữ liệu này bằng cách sử dụng DROP DATABASE Statement như hình bên dưới.

< DROP DATABASE IF EXISTS sample_database;

Thao tác này sẽ xóa cơ sở dữ liệu được chỉ định và cung cấp cho bạn kết quả sau.

Query: drop DATABASE IF EXISTS sample_database;

xác minh

Bạn có thể xác minh xem cơ sở dữ liệu đã cho có bị xóa hay không, bằng cách sử dụng SHOW DATABASEStuyên bố. Ở đây bạn có thể thấy rằng cơ sở dữ liệu có tênsample_database bị xóa khỏi danh sách cơ sở dữ liệu.

[quickstart.cloudera:21000] > SHOW DATABASES;

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

Cascade

Nói chung, để xóa cơ sở dữ liệu, bạn cần xóa tất cả các bảng trong đó theo cách thủ công. Nếu bạn sử dụng cascade, Impala sẽ xóa các bảng trong cơ sở dữ liệu được chỉ định trước khi xóa nó.

Thí dụ

Giả sử có một cơ sở dữ liệu trong Impala có tên samplevà nó chứa hai bảng, cụ thể là studenttest. Nếu bạn cố gắng loại bỏ cơ sở dữ liệu này trực tiếp, bạn sẽ gặp lỗi như hình dưới đây.

[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.

Sử dụng cascade, bạn có thể xóa cơ sở dữ liệu này trực tiếp (mà không cần xóa nội dung của nó theo cách thủ công) như hình dưới đây.

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

Note - Bạn không thể xóa “current database”Ở Impala. Do đó, trước khi xóa cơ sở dữ liệu, bạn cần đảm bảo rằng ngữ cảnh hiện tại được đặt thành cơ sở dữ liệu khác với ngữ cảnh mà bạn định xóa.

Xóa Cơ sở dữ liệu bằng Trình duyệt Huế

Mở trình chỉnh sửa Truy vấn Impala và nhập DELETE DATABASEtrong đó và nhấp vào nút thực thi như hình dưới đây. Giả sử có ba cơ sở dữ liệu, cụ thể làmy_db, my_databasesample_databasecùng với cơ sở dữ liệu mặc định. Ở đây chúng tôi đang xóa cơ sở dữ liệu có tên my_database.

Sau khi thực hiện truy vấn, nhẹ nhàng di chuyển con trỏ lên đầu trình đơn thả xuống. Sau đó, bạn sẽ tìm thấy một biểu tượng làm mới như được hiển thị trong ảnh chụp màn hình bên dưới. Nếu bạn nhấp vào biểu tượng làm mới, danh sách cơ sở dữ liệu sẽ được làm mới và những thay đổi gần đây được thực hiện sẽ được áp dụng cho nó.

xác minh

Bấm vào drop down dưới tiêu đề DATABASEở phía bên trái của trình chỉnh sửa. Tại đó, bạn có thể xem danh sách các cơ sở dữ liệu trong hệ thống. Tại đây bạn có thể quan sát cơ sở dữ liệu mới được tạomy_db như hình bên dưới.

Nếu quan sát kỹ, bạn chỉ có thể thấy một cơ sở dữ liệu, tức là my_db trong danh sách cùng với cơ sở dữ liệu mặc định.