Apache-tajo-sql-statements
Apache Tajo-SQLステートメント
前の章で、Tajoでテーブルを作成する方法を理解しました。 この章では、TajoのSQLステートメントについて説明します。
テーブルステートメントの作成
テーブルを作成するために移動する前に、次のようにTajoインストールディレクトリパスにテキストファイル「students.csv」を作成します-
Id | Name | Address | Age | Marks |
---|---|---|---|---|
1 | Adam | 23 New Street | 21 | 90 |
2 | Amit | 12 Old Street | 13 | 95 |
3 | Bob | 10 Cross Street | 12 | 80 |
4 | David | 15 Express Avenue | 12 | 85 |
5 | Esha | 20 Garden Street | 13 | 50 |
6 | Ganga | 25 North Street | 12 | 55 |
7 | Jack | 2 Park Street | 12 | 60 |
8 | Leena | 24 South Street | 12 | 70 |
9 | Mary | 5 West Street | 12 | 75 |
10 | Peter | 16 Park Avenue | 12 | 95 |
ファイルが作成されたら、ターミナルに移動し、Tajoサーバーとシェルを1つずつ起動します。
データベースを作成する
次のコマンドを使用して新しいデータベースを作成します-
問い合わせ
作成されたデータベース「sampledb」に接続します。
次に、次のように「sampledb」にテーブルを作成します-
問い合わせ
結果
上記のクエリは、次の結果を生成します。
ここで、外部テーブルが作成されます。 ここで、ファイルの場所を入力するだけです。 hdfsからテーブルを割り当てる必要がある場合は、fileではなくhdfsを使用します。
次に、“ students.csv” *ファイルにはコンマ区切り値が含まれています。 *text.delimiter フィールドには「、」が割り当てられます。
これで、「sampledb」に「mytable」が正常に作成されました。
テーブルを表示
Tajoのテーブルを表示するには、次のクエリを使用します。
問い合わせ
結果
上記のクエリは、次の結果を生成します。
リスト表
テーブル内のすべてのレコードを取得するには、次のクエリを入力します-
問い合わせ
結果
上記のクエリは、次の結果を生成します。
テーブルステートメントの挿入
Tajoは、次の構文を使用してテーブルにレコードを挿入します。
構文
Tajoのinsertステートメントは、SQLの INSERT INTO SELECT ステートメントに似ています。
問い合わせ
既存のテーブルのテーブルデータを上書きするテーブルを作成しましょう。
結果
上記のクエリは、次の結果を生成します。
レコードを挿入
「テスト」テーブルにレコードを挿入するには、次のクエリを入力します。
問い合わせ
結果
上記のクエリは、次の結果を生成します。
ここでは、「mytable」レコードが「test」テーブルを上書きします。 「テスト」テーブルを作成したくない場合は、クエリを挿入するための代替オプションで説明されているように、すぐに物理パスの場所を割り当てます。
レコードを取得する
「テスト」テーブル内のすべてのレコードをリストするには、次のクエリを使用します-
問い合わせ
結果
上記のクエリは、次の結果を生成します。
このステートメントは、既存のテーブルの列を追加、削除、または変更するために使用されます。
テーブルの名前を変更するには、次の構文を使用します-
問い合わせ
結果
上記のクエリは、次の結果を生成します。
変更されたテーブル名を確認するには、次のクエリを使用します。
テーブル「test」が「students」テーブルに変更されました。
列を追加
「学生」テーブルに新しい列を挿入するには、次の構文を入力します-
問い合わせ
結果
上記のクエリは、次の結果を生成します。
プロパティを設定
このプロパティは、テーブルのプロパティを変更するために使用されます。
問い合わせ
ここでは、圧縮タイプとコーデックプロパティが割り当てられます。
テキスト区切りプロパティを変更するには、次を使用します-
問い合わせ
結果
上記のクエリは、次の結果を生成します。
上記の結果は、「SET」プロパティを使用してテーブルのプロパティが変更されることを示しています。
選択ステートメント
SELECTステートメントは、データベースからデータを選択するために使用されます。
Selectステートメントの構文は次のとおりです-
Where句
Where句は、テーブルからレコードをフィルタリングするために使用されます。
問い合わせ
結果
上記のクエリは、次の結果を生成します。
クエリは、idが5より大きい生徒のレコードを返します。
問い合わせ
結果
上記のクエリは、次の結果を生成します。
結果はPeterのレコードのみをフィルタリングします。
明確な条項
テーブルの列に重複した値が含まれる場合があります。 DISTINCTキーワードを使用して、異なる(異なる)値のみを返すことができます。
構文
問い合わせ
結果
上記のクエリは、次の結果を生成します。
このクエリは、 mytable から学生の明確な年齢を返します。
句ごとのグループ化
GROUP BY句は、SELECTステートメントと連携して使用され、同一のデータをグループに配置します。
構文
問い合わせ
結果
上記のクエリは、次の結果を生成します。
ここで、「mytable」列には、12と13の2種類の年齢があります。 これで、クエリはレコードを年齢別にグループ化し、対応する学生の年齢のマークの合計を生成します。
句を持っている
HAVING句を使用すると、最終結果に表示されるグループ結果をフィルタリングする条件を指定できます。 WHERE句は選択した列に条件を配置しますが、HAVING句はGROUP BY句によって作成されたグループに条件を配置します。
構文
問い合わせ
結果
上記のクエリは、次の結果を生成します。
クエリは、レコードを年齢でグループ化し、条件結果sum(mark)> 200のときに年齢を返します。
条項による注文
ORDER BY句は、1つ以上の列に基づいてデータを昇順または降順に並べ替えるために使用されます。 Tajoデータベースは、デフォルトでクエリ結果を昇順でソートします。
構文
問い合わせ
結果
上記のクエリは、次の結果を生成します。
クエリは、マークが60より大きい生徒の名前を降順で返します。
インデックスステートメントの作成
CREATE INDEXステートメントは、テーブルにインデックスを作成するために使用されます。 インデックスは、データの高速取得に使用されます。 現在のバージョンでは、HDFSに保存されているプレーンテキスト形式のインデックスのみがサポートされています。
構文
問い合わせ
結果
上記のクエリは、次の結果を生成します。
列に割り当てられたインデックスを表示するには、次のクエリを入力します。
ここでは、TWOでTWO_LEVEL_BIN_TREEメソッドがデフォルトで使用されます。
テーブルステートメントの削除
Drop Tableステートメントは、データベースからテーブルを削除するために使用されます。
構文
問い合わせ
テーブルがテーブルから削除されたかどうかを確認するには、次のクエリを入力します。
結果
上記のクエリは、次の結果を生成します。
「\ d」コマンドを使用してクエリを確認し、使用可能なTajoテーブルをリストすることもできます。