อิมพาลา - เปลี่ยนตาราง

คำสั่ง Alter table ใน Impala ใช้เพื่อดำเนินการเปลี่ยนแปลงบนตารางที่กำหนด เมื่อใช้คำสั่งนี้เราสามารถเพิ่มลบหรือแก้ไขคอลัมน์ในตารางที่มีอยู่และเรายังสามารถเปลี่ยนชื่อได้อีกด้วย

บทนี้อธิบายประเภทต่างๆของข้อความเปลี่ยนแปลงพร้อมไวยากรณ์และตัวอย่าง ก่อนอื่นสมมติว่าเรามีตารางชื่อcustomers ใน my_db ฐานข้อมูลใน Impala พร้อมข้อมูลต่อไปนี้

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

และถ้าคุณได้รับรายชื่อตารางในฐานข้อมูล my_dbคุณสามารถค้นหาไฟล์ customers ตามตารางด้านล่าง

[quickstart.cloudera:21000] > show tables;

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

การเปลี่ยนชื่อของตาราง

ไวยากรณ์

ไวยากรณ์พื้นฐานของ ALTER TABLE ในการเปลี่ยนชื่อตารางที่มีอยู่มีดังนี้ -

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

ตัวอย่าง

ต่อไปนี้เป็นตัวอย่างของการเปลี่ยนชื่อของตารางโดยใช้ alterคำให้การ. ที่นี่เรากำลังเปลี่ยนชื่อของตารางcustomers ให้กับผู้ใช้

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

หลังจากดำเนินการค้นหาข้างต้น Impala จะเปลี่ยนชื่อของตารางตามต้องการโดยแสดงข้อความต่อไปนี้

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

คุณสามารถตรวจสอบรายการตารางในฐานข้อมูลปัจจุบันโดยใช้ไฟล์ show tablesคำให้การ. คุณสามารถค้นหาตารางชื่อusers แทน customers.

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

การเพิ่มคอลัมน์ลงในตาราง

ไวยากรณ์

ไวยากรณ์พื้นฐานของ ALTER TABLE ในการเพิ่มคอลัมน์ลงในตารางที่มีอยู่มีดังนี้ -

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

ตัวอย่าง

แบบสอบถามต่อไปนี้เป็นตัวอย่างที่สาธิตวิธีการเพิ่มคอลัมน์ในตารางที่มีอยู่ ที่นี่เรากำลังเพิ่มสองคอลัมน์ account_no และ phone_number (ทั้งสองเป็นประเภทข้อมูลขนาดใหญ่) ในไฟล์users ตาราง.

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

ในการดำเนินการค้นหาข้างต้นจะเพิ่มคอลัมน์ที่ระบุลงในตารางที่มีชื่อว่า studentแสดงข้อความต่อไปนี้

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

หากคุณตรวจสอบสคีมาของตาราง usersคุณสามารถค้นหาคอลัมน์ที่เพิ่มใหม่ได้ดังที่แสดงด้านล่าง

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

การวางคอลัมน์จากตาราง

ไวยากรณ์

ไวยากรณ์พื้นฐานของ ALTER TABLE เป็น DROP COLUMN ในตารางที่มีอยู่มีดังนี้ -

ALTER TABLE name DROP [COLUMN] column_name

ตัวอย่าง

แบบสอบถามต่อไปนี้เป็นตัวอย่างของการลบคอลัมน์จากตารางที่มีอยู่ ที่นี่เรากำลังลบคอลัมน์ชื่อaccount_no.

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

ในการดำเนินการค้นหาข้างต้น Impala จะลบคอลัมน์ชื่อ account_no ที่แสดงข้อความต่อไปนี้

Query: alter TABLE users DROP account_no

หากคุณตรวจสอบสคีมาของตาราง usersคุณไม่พบคอลัมน์ที่ชื่อ 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 เป็น change the name and datatype ของคอลัมน์ในตารางที่มีอยู่มีดังนี้ -

ALTER TABLE name CHANGE column_name new_name new_type

ตัวอย่าง

ต่อไปนี้เป็นตัวอย่างของการเปลี่ยนชื่อและประเภทข้อมูลของคอลัมน์โดยใช้คำสั่ง alter เรากำลังเปลี่ยนชื่อคอลัมน์phone_no to email และประเภทข้อมูลเป็น string.

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

ในการดำเนินการค้นหาข้างต้น Impala ทำการเปลี่ยนแปลงที่ระบุโดยแสดงข้อความต่อไปนี้

Query: alter TABLE users CHANGE phone_no e_mail string

คุณสามารถตรวจสอบข้อมูลเมตาของผู้ใช้ตารางโดยใช้ไฟล์ describeคำให้การ. คุณสามารถสังเกตได้ว่า 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

การแก้ไขตารางโดยใช้ฮิว

เปิดตัวแก้ไข Impala Query และพิมพ์ไฟล์ alter คำสั่งในนั้นและคลิกที่ปุ่มดำเนินการดังที่แสดงในภาพหน้าจอต่อไปนี้

ในการเรียกใช้แบบสอบถามข้างต้นจะเปลี่ยนชื่อของตาราง customers ถึง users. ในทำนองเดียวกันเราสามารถเรียกใช้ไฟล์alter แบบสอบถาม