impala ALTER TABLE

2018-01-03 17:05 更新

Impala中的Alter table語句用于對給定表執(zhí)行更改。 使用此語句,我們可以添加,刪除或修改現(xiàn)有表中的列,也可以重命名它們。

本章通過語法和示例解釋了各種類型的alter語句。 首先假設(shè)我們在Impala的my_db數(shù)據(jù)庫中有一個名為customers的表,具有以下數(shù)據(jù)

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

并且,如果獲取數(shù)據(jù)庫my_db中的表列表,可以在其中找到customers表,如下所示。

[quickstart.cloudera:21000] > show tables;

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

更改表的名稱

語法

ALTER TABLE重命名現(xiàn)有表的基本語法如下 -

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

下面是使用alter語句更改表名稱的示例。 這里我們將表客戶的名稱更改為用戶。

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

執(zhí)行上述查詢后,Impala根據(jù)需要更改表的名稱,并顯示以下消息。

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

您可以使用show tables語句驗證當前數(shù)據(jù)庫中的表的列表。 您可以找到名為users而不是customers的表。

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

向表中添加列

語法

ALTER TABLE向現(xiàn)有表中添加列的基本語法如下 -

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

以下查詢是演示如何向現(xiàn)有表中添加列的示例。 這里我們在users表中添加兩列account_no和phone_number(兩者都是bigint數(shù)據(jù)類型)。

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

在執(zhí)行上面的查詢時,它會將指定的列添加到名為student的表中,并顯示以下消息。

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

如果您驗證表用戶的模式,您可以在其中找到新添加的列,如下所示。

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

從表中刪除列

語法

現(xiàn)有表中ALTER TABLE到DROP COLUMN的基本語法如下 -

ALTER TABLE name DROP [COLUMN] column_name

以下查詢是從現(xiàn)有表中刪除列的示例。 這里我們刪除名為account_no的列。

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

在執(zhí)行上面的查詢時,Impala刪除名為account的列,不顯示以下消息。

Query: alter TABLE users DROP account_no

如果驗證表用戶的模式,則在刪除之后,將找不到名為account_no的列。

[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

更改列的名稱和類型

語法

ALTER TABLE更改現(xiàn)有表中的列的名稱和數(shù)據(jù)類型的基本語法如下 -

ALTER TABLE name CHANGE column_name new_name new_type

以下是使用alter語句更改列的名稱和數(shù)據(jù)類型的示例。 這里我們將列phone_no的名稱更改為電子郵件,將其數(shù)據(jù)類型更改為字符串。

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

在執(zhí)行上述查詢時,Impala執(zhí)行指定的更改,顯示以下消息。

Query: alter TABLE users CHANGE phone_no e_mail string

您可以使用describe語句驗證表用戶的元數(shù)據(jù)。 您可以觀察到Impala已對指定的列進行了必要的更改。

[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

使用Hue改變表

打開Impala查詢編輯器并在其中鍵入alter語句,然后單擊執(zhí)行按鈕,如下面的屏幕截圖所示。

變更表

在執(zhí)行上述查詢時,它會將表customer的名稱更改為用戶。 以同樣的方式,我們可以執(zhí)行所有的alter查詢。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號