Impala-insert-statement
Impala-ステートメントの挿入
Impalaの INSERT ステートメントには、 into と overwrite の2つの句があります。 into 句を含むInsertステートメントは、データベース内の既存のテーブルに新しいレコードを追加するために使用されます。
構文
次のように INSERT ステートメントの2つの基本的な構文があります-
insert into table_name (column1, column2, column3,...columnN)
values (value1, value2, value3,...valueN);
ここで、column1、column2、… columnNは、データを挿入するテーブル内の列の名前です。
列名を指定せずに値を追加することもできますが、そのためには、以下に示すように、値の順序が表の列と同じ順序であることを確認する必要があります。
Insert into table_name values (value1, value2, value2);
CREATE TABLEは、データベースシステムに新しいテーブルを作成するよう指示するキーワードです。 テーブルの一意の名前または識別子は、CREATE TABLEステートメントの後に続きます。 オプションで、 table_name とともに database_name を指定できます。
例
以下に示すように、Impalaで student という名前のテーブルを作成したとします。
create table employee (Id INT, name STRING, age INT,address STRING, salary BIGINT);
以下は、 employee という名前のテーブルにレコードを作成する例です。
[quickstart.cloudera:21000] > insert into employee
(ID,NAME,AGE,ADDRESS,SALARY)VALUES (1, 'Ramesh', 32, 'Ahmedabad', 20000 );
上記のステートメントを実行すると、レコードが employee という名前のテーブルに挿入され、次のメッセージが表示されます。
Query: insert into employee (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Ramesh',
32, 'Ahmedabad', 20000 )
Inserted 1 row(s) in 1.32s
以下に示すように、列名を指定せずに別のレコードを挿入できます。
[quickstart.cloudera:21000] > insert into employee values (2, 'Khilan', 25,
'Delhi', 15000 );
上記のステートメントを実行すると、レコードが employee という名前のテーブルに挿入され、次のメッセージが表示されます。
Query: insert into employee values (2, 'Khilan', 25, 'Delhi', 15000 )
Inserted 1 row(s) in 0.31s
以下に示すように、従業員テーブルにさらにいくつかのレコードを挿入できます。
Insert into employee values (3, 'kaushik', 23, 'Kota', 30000 );
Insert into employee values (4, 'Chaitali', 25, 'Mumbai', 35000 );
Insert into employee values (5, 'Hardik', 27, 'Bhopal', 40000 );
Insert into employee values (6, 'Komal', 22, 'MP', 32000 );
値を挿入すると、Impalaの employee テーブルは次のようになります。
+----+----------+-----+-----------+--------+
| id | name | age | address | salary |
+----+----------+-----+-----------+--------+
| 1 | Ramesh | 32 | Ahmedabad | 20000 |
| 2 | Khilan | 25 | Delhi | 15000 |
| 5 | Hardik | 27 | Bhopal | 40000 |
| 4 | Chaitali | 25 | Mumbai | 35000 |
| 3 | kaushik | 23 | Kota | 30000 |
| 6 | Komal | 22 | MP | 32000 |
+----+----------+-----+-----------+--------+
テーブル内のデータを上書きする
上書き句を使用して、テーブルのレコードを上書きできます。 上書きされたレコードはテーブルから完全に削除されます。 上書き句を使用する構文は次のとおりです。
Insert overwrite table_name values (value1, value2, value2);
例
以下は、 overwrite 句の使用例です。
[quickstart.cloudera:21000] > Insert overwrite employee values (1, 'Ram', 26,
'Vishakhapatnam', 37000 );
上記のクエリを実行すると、指定したレコードでテーブルデータが上書きされ、次のメッセージが表示されます。
Query: insert overwrite employee values (1, 'Ram', 26, 'Vishakhapatnam', 37000 )
Inserted 1 row(s) in 0.31s
テーブルを検証すると、以下に示すように、テーブル employee のすべてのレコードが新しいレコードで上書きされていることがわかります。
+----+------+-----+---------------+--------+
| id | name | age | address | salary |
+----+------+-----+---------------+--------+
| 1 | Ram | 26 | Vishakhapatnam| 37000 |
+----+------+-----+---------------+--------+
Hueブラウザを使用したデータの挿入
Impala Queryエディターを開き、その中に*挿入*ステートメントを入力します。 次のスクリーンショットに示すように、実行ボタンをクリックします。
クエリ/ステートメントの実行後、このレコードがテーブルに追加されます。