Impala-alter-table
Impala-テーブルの変更
ImpalaのAlter tableステートメントは、特定のテーブルで変更を実行するために使用されます。 このステートメントを使用して、既存のテーブルの列を追加、削除、または変更でき、名前を変更することもできます。
この章では、構文と例を使用して、さまざまなタイプのALTERステートメントについて説明します。 まず、Impalaの my_db データベースに次のデータを持つ customers という名前のテーブルがあると仮定します。
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* ステートメントを使用して、現在のデータベースのテーブルのリストを確認できます。 *customers* ではなく、 *users* という名前のテーブルを見つけることができます。
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 ...])
例
次のクエリは、既存のテーブルに列を追加する方法を示す例です。 ここでは、2つの列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の基本的な構文は次のとおりです-
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の基本的な構文は次のとおりです-
ALTER TABLE name CHANGE column_name new_name new_type
例
以下は、alterステートメントを使用して列の名前とデータ型を変更する例です。 ここでは、列の名前を phone_noを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
Hueを使用してテーブルを変更する
Impala Queryエディターを開き、その中に alter ステートメントを入力し、次のスクリーンショットに示すように実行ボタンをクリックします。
上記のクエリを実行すると、テーブル customers の名前が users に変更されます。 同様に、すべての alter クエリを実行できます。