Cassandra-データの読み取り

Select句を使用したデータの読み取り

SELECT句は、Cassandraのテーブルからデータを読み取るために使用されます。この句を使用すると、テーブル全体、単一の列、または特定のセルを読み取ることができます。SELECT句の構文は次のとおりです。

SELECT FROM <tablename>

キースペースにという名前のテーブルがあると仮定します emp 以下の詳細で-

emp_id emp_name emp_city emp_phone emp_sal
1 ハイデラバード 9848022338 50000
2 ロビン ヌル 9848022339 50000
3 ラーマン チェンナイ 9848022330 50000
4 ラジーブ プネ 9848022331 30000

次の例は、SELECT句を使用してテーブル全体を読み取る方法を示しています。ここでは、というテーブルを読んでいますemp

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |   ram    | 9848022338 | 50000
      2 | null      |   robin  | 9848022339 | 50000
      3 | Chennai   |   rahman | 9848022330 | 50000
      4 | Pune      |   rajeev | 9848022331 | 30000
		
(4 rows)

必要な列を読む

次の例は、テーブルの特定の列を読み取る方法を示しています。

cqlsh:tutorialspoint> SELECT emp_name, emp_sal from emp;

 emp_name | emp_sal
----------+---------
      ram | 50000
    robin | 50000
   rajeev | 30000
   rahman | 50000 
	
(4 rows)

Where句

WHERE句を使用すると、必要な列に制約を設定できます。その構文は次のとおりです-

SELECT FROM <table name> WHERE <condition>;

Note − WHERE句は、主キーの一部であるか、セカンダリインデックスがある列でのみ使用できます。

次の例では、給与が50000の従業員の詳細を読み取っています。まず、セカンダリインデックスを列emp_salに設定します。

cqlsh:tutorialspoint> CREATE INDEX ON emp(emp_sal);
cqlsh:tutorialspoint> SELECT * FROM emp WHERE emp_sal=50000;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |      null |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | 50000

JavaAPIを使用したデータの読み取り

Sessionクラスのexecute()メソッドを使用して、テーブルからデータを読み取ることができます。以下の手順に従って、JavaAPIを使用してバッチステートメントを使用して複数のステートメントを実行します。

ステップ1:クラスターオブジェクトを作成する

のインスタンスを作成します Cluster.builder のクラス com.datastax.driver.core 以下に示すパッケージ。

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

を使用して連絡先(ノードのIPアドレス)を追加します addContactPoint() の方法 Cluster.Builderオブジェクト。このメソッドはCluster.Builder

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

新しいビルダーオブジェクトを使用して、クラスターオブジェクトを作成します。これを行うには、次のメソッドがありますbuild() の中に Cluster.Builderクラス。次のコードを使用して、クラスターオブジェクトを作成します。

//Building a cluster
Cluster cluster = builder.build();

以下に示すように、1行のコードを使用してクラスターオブジェクトを構築できます。

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

ステップ2:セッションオブジェクトを作成する

以下に示すように、Clusterクラスのconnect()メソッドを使用してSessionオブジェクトのインスタンスを作成します。

Session session = cluster.connect( );

このメソッドは、新しいセッションを作成して初期化します。すでにキースペースがある場合は、以下に示すように、文字列形式のKeySpace名をこのメソッドに渡すことで、既存のキースペースに設定できます。

Session session = cluster.connect(“Your keyspace name”);

ここでは、KeySpaceと呼ばれるものを使用しています tp。したがって、以下に示すようにセッションオブジェクトを作成します。

Session session = cluster.connect(“tp”);

ステップ3:クエリを実行する

Sessionクラスのexecute()メソッドを使用してCQLクエリを実行できます。クエリを文字列形式またはStatementクラスオブジェクトとしてexecute()メソッドに渡します。文字列形式でこのメソッドに渡すものはすべて、で実行されます。cqlsh

この例では、からデータを取得しています empテーブル。以下に示すように、クエリを文字列に格納し、セッションクラスのexecute()メソッドに渡します。

String query = ”SELECT 8 FROM emp”;
session.execute(query);

Sessionクラスのexecute()メソッドを使用してクエリを実行します。

ステップ4:ResultSetオブジェクトを取得する

selectクエリは、結果を次の形式で返します。 ResultSet オブジェクト、したがって、結果をのオブジェクトに格納します RESULTSET 以下に示すクラス。

ResultSet result = session.execute( );

以下に示すのは、テーブルからデータを読み取るための完全なプログラムです。

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;

public class Read_Data {

   public static void main(String args[])throws Exception{
    
      //queries
      String query = "SELECT * FROM emp";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect("tutorialspoint");
    
      //Getting the ResultSet
      ResultSet result = session.execute(query);
    
      System.out.println(result.all());
   }
}

上記のプログラムをクラス名の後に.javaを付けて保存し、保存されている場所を参照します。以下に示すように、プログラムをコンパイルして実行します。

$javac Read_Data.java
$java Read_Data

通常の状態では、次の出力が生成されます。

[Row[1, Hyderabad, ram, 9848022338, 50000], Row[2, Delhi, robin,
9848022339, 50000], Row[4, Pune, rajeev, 9848022331, 30000], Row[3,
Chennai, rahman, 9848022330, 50000]]