Impala-alter-table

提供:Dev Guides
移動先:案内検索

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 クエリを実行できます。