इम्पाला - ऑल्टर टेबल

इम्पाला में ऑल्टर टेबल स्टेटमेंट का उपयोग किसी दिए गए टेबल पर परिवर्तन करने के लिए किया जाता है। इस कथन का उपयोग करके, हम मौजूदा तालिका में कॉलम जोड़ सकते हैं, हटा सकते हैं या संशोधित कर सकते हैं और हम इसका नाम बदल भी सकते हैं।

यह अध्याय वाक्य-विन्यास और उदाहरणों के साथ कई प्रकार के परिवर्तनकारी कथन की व्याख्या करता है। सबसे पहले यह मान लें कि हमारे पास एक टेबल है जिसका नाम हैcustomers में my_db इम्पाला में डेटाबेस, निम्नलिखित डेटा के साथ

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;

उपरोक्त क्वेरी को निष्पादित करने के बाद, इम्पाला निम्न संदेश को प्रदर्शित करते हुए आवश्यकतानुसार तालिका का नाम बदल देता है।

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 (दोनों bigint डेटा प्रकार के हैं)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

एक मेज से स्तंभों को गिरा देना

वाक्य - विन्यास

के लिए बुनियादी तालिका के बुनियादी वाक्यविन्यास DROP COLUMN एक मौजूदा तालिका में निम्नानुसार है -

ALTER TABLE name DROP [COLUMN] column_name

उदाहरण

निम्न क्वेरी मौजूदा तालिका से कॉलम हटाने का एक उदाहरण है। यहां हम नाम के कॉलम को हटा रहे हैंaccount_no

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

उपरोक्त क्वेरी को निष्पादित करने पर, इम्पाला निम्नलिखित संदेश प्रदर्शित करने वाले 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

एक कॉलम का नाम और प्रकार बदलना

वाक्य - विन्यास

के लिए बुनियादी तालिका के बुनियादी वाक्यविन्यास change the name and datatype मौजूदा तालिका में एक कॉलम निम्नानुसार है -

ALTER TABLE name CHANGE column_name new_name new_type

उदाहरण

निम्न कथन का उपयोग करके स्तंभ के नाम और डेटाटाइप को बदलने का एक उदाहरण है। यहां हम कॉलम का नाम बदल रहे हैंphone_no to email और इसका डेटा प्रकार string

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

उपरोक्त क्वेरी निष्पादित करने पर, इम्पाला निर्दिष्ट परिवर्तन करता है, जो निम्न संदेश प्रदर्शित करता है।

Query: alter TABLE users CHANGE phone_no e_mail string

आप का उपयोग करके तालिका उपयोगकर्ताओं के मेटाडेटा को सत्यापित कर सकते हैं describeबयान। आप देख सकते हैं कि इम्पाला ने निर्दिष्ट कॉलम में आवश्यक परिवर्तन किए हैं।

[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 इसमें कथन और निम्नलिखित स्क्रीनशॉट में दिखाए अनुसार निष्पादित बटन पर क्लिक करें।

उपरोक्त क्वेरी को निष्पादित करने पर, यह तालिका का नाम बदल देगा customers सेवा users। उसी तरह, हम सभी को निष्पादित कर सकते हैंalter प्रश्नों।