อิมพาลา - เปลี่ยนตาราง
คำสั่ง 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 แบบสอบถาม