Impala - Bảng thay thế

Câu lệnh bảng Alter trong Impala được sử dụng để thực hiện các thay đổi trên một bảng nhất định. Sử dụng câu lệnh này, chúng tôi có thể thêm, xóa hoặc sửa đổi các cột trong bảng hiện có và chúng tôi cũng có thể đổi tên nó.

Chương này giải thích các loại câu lệnh thay đổi khác nhau với cú pháp và ví dụ. Trước hết, giả sử rằng chúng ta có một bảng có têncustomers bên trong my_db cơ sở dữ liệu trong Impala, với dữ liệu sau

ID   NAME     AGE   ADDRESS    SALARY
--- --------- ----- ----------- --------
1   Ramesh    32    Ahmedabad   20000
2   Khilan    25    Delhi       15000
3   Hardik    27    Bhopal      40000
4   Chaitali  25    Mumbai      35000
5   kaushik   23    Kota        30000
6   Komal     22    Mp          32000

Và, nếu bạn nhận được danh sách các bảng trong cơ sở dữ liệu my_db, bạn có thể tìm thấy customers bảng trong đó như hình dưới đây.

[quickstart.cloudera:21000] > show tables;

Query: show tables 
+-----------+ 
| name      | 
+-----------+ 
| customers | 
| employee  | 
| student   | 
| student1  | 
+-----------+

Thay đổi tên của một bảng

Cú pháp

Cú pháp cơ bản của ALTER TABLE để đổi tên một bảng hiện có như sau:

ALTER TABLE [old_db_name.]old_table_name RENAME TO [new_db_name.]new_table_name

Thí dụ

Sau đây là một ví dụ về việc thay đổi tên của bảng bằng cách sử dụng altertuyên bố. Ở đây chúng tôi đang thay đổi tên của bảngcustomers cho người dùng.

[quickstart.cloudera:21000] > ALTER TABLE my_db.customers RENAME TO my_db.users;

Sau khi thực hiện truy vấn trên, Impala thay đổi tên của bảng theo yêu cầu, hiển thị thông báo sau.

Query: alter TABLE my_db.customers RENAME TO my_db.users

Bạn có thể xác minh danh sách các bảng trong cơ sở dữ liệu hiện tại bằng cách sử dụng show tablestuyên bố. Bạn có thể tìm thấy bảng có tênusers thay vì customers.

Query: show tables 
+----------+ 
| name     | 
+----------+ 
| employee | 
| student  | 
| student1 | 
| users    | 
+----------+ 
Fetched 4 row(s) in 0.10s

Thêm cột vào bảng

Cú pháp

Cú pháp cơ bản của ALTER TABLE để thêm cột vào bảng hiện có như sau:

ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])

Thí dụ

Truy vấn sau đây là một ví dụ minh họa cách thêm cột vào bảng hiện có. Ở đây chúng tôi đang thêm hai cột account_no và phone_number (cả hai đều thuộc loại dữ liệu bigint) vàousers bàn.

[quickstart.cloudera:21000] > ALTER TABLE users ADD COLUMNS (account_no BIGINT, 
phone_no BIGINT);

Khi thực hiện truy vấn trên, nó sẽ thêm các cột được chỉ định vào bảng có tên student, hiển thị thông báo sau.

Query: alter TABLE users ADD COLUMNS (account_no BIGINT, phone_no BIGINT)

Nếu bạn xác minh lược đồ của bảng users, bạn có thể tìm thấy các cột mới được thêm vào trong đó như hình dưới đây.

quickstart.cloudera:21000] > describe users;
 
Query: describe users 
+------------+--------+---------+ 
| name       | type   | comment | 
+------------+--------+---------+ 
| id         | int    |         | 
| name       | string |         | 
| age        | int    |         |
| address    | string |         | 
| salary     | bigint |         | 
| account_no | bigint |         | 
| phone_no   | bigint |         | 
+------------+--------+---------+ 
Fetched 7 row(s) in 0.20s

Bỏ cột khỏi bảng

Cú pháp

Cú pháp cơ bản của ALTER TABLE thành DROP COLUMN trong một bảng hiện có như sau:

ALTER TABLE name DROP [COLUMN] column_name

Thí dụ

Truy vấn sau đây là một ví dụ về việc xóa các cột khỏi một bảng hiện có. Ở đây chúng tôi đang xóa cột có tênaccount_no.

[quickstart.cloudera:21000] > ALTER TABLE users DROP account_no;

Khi thực hiện truy vấn trên, Impala xóa cột có tên account_no hiển thị thông báo sau.

Query: alter TABLE users DROP account_no

Nếu bạn xác minh lược đồ của bảng users, bạn không thể tìm thấy cột có tên account_no vì nó đã bị xóa.

[quickstart.cloudera:21000] > describe users; 

Query: describe users 
+----------+--------+---------+ 
| name     | type   | comment | 
+----------+--------+---------+ 
| id       | int    |         | 
| name     | string |         | 
| age      | int    |         | 
| address  | string |         | 
| salary   | bigint |         | 
| phone_no | bigint |         |
+----------+--------+---------+ 
Fetched 6 row(s) in 0.11s

Thay đổi tên và loại cột

Cú pháp

Cú pháp cơ bản của ALTER TABLE thành change the name and datatype của một cột trong bảng hiện có như sau:

ALTER TABLE name CHANGE column_name new_name new_type

Thí dụ

Sau đây là một ví dụ về việc thay đổi tên và kiểu dữ liệu của một cột bằng cách sử dụng câu lệnh thay đổi. Ở đây chúng tôi đang thay đổi tên của cộtphone_no to email và kiểu dữ liệu của nó để string.

[quickstart.cloudera:21000] > ALTER TABLE users CHANGE phone_no e_mail string;

Khi thực hiện truy vấn trên, Impala thực hiện các thay đổi được chỉ định, hiển thị thông báo sau.

Query: alter TABLE users CHANGE phone_no e_mail string

Bạn có thể xác minh siêu dữ liệu của những người dùng bảng bằng cách sử dụng describetuyên bố. Bạn có thể thấy rằng Impala đã thực hiện các thay đổi cần thiết cho cột được chỉ định.

[quickstart.cloudera:21000] > describe users; 
Query: describe users 
+----------+--------+---------+ 
| name     | type   | comment | 
+----------+--------+---------+ 
| id       | int    |         | 
| name     | string |         | 
| age      | int    |         | 
| address  | string |         | 
| salary   | bigint |         | 
| phone_no | bigint |         |
+----------+--------+---------+ 
Fetched 6 row(s) in 0.11s

Thay đổi bảng bằng cách sử dụng Hue

Mở trình chỉnh sửa Truy vấn Impala và nhập alter trong đó và nhấp vào nút thực thi như thể hiện trong ảnh chụp màn hình sau.

Khi thực hiện truy vấn trên, nó sẽ thay đổi tên của bảng customers đến users. Theo cách tương tự, chúng tôi có thể thực hiện tất cảalter truy vấn.