Cassandra-データの更新

テーブル内のデータの更新

UPDATEテーブル内のデータを更新するために使用されるコマンドです。次のキーワードは、テーブルのデータを更新するときに使用されます-

  • Where −この句は、更新する行を選択するために使用されます。

  • Set −このキーワードを使用して値を設定します。

  • Must −主キーを構成するすべての列が含まれます。

行の更新中に、特定の行が使用できない場合、UPDATEは新しい行を作成します。以下に、UPDATEコマンドの構文を示します。

UPDATE <tablename>
SET <column name> = <new value>
<column name> = <value>....
WHERE <condition>

名前の付いたテーブルがあると仮定します emp。このテーブルには、特定の会社の従業員の詳細が格納されており、次の詳細があります。

emp_id emp_name emp_city emp_phone emp_sal
1 ハイデラバード 9848022338 50000
2 ロビン ハイデラバード 9848022339 40000
3 ラーマン チェンナイ 9848022330 45000

ロビンのemp_cityをデリーに更新し、彼の給与を50000に更新しましょう。以下に、必要な更新を実行するためのクエリを示します。

cqlsh:tutorialspoint> UPDATE emp SET emp_city='Delhi',emp_sal=50000
   WHERE emp_id=2;

検証

SELECTステートメントを使用して、データが更新されているかどうかを確認します。SELECTステートメントを使用してempテーブルを検証すると、次の出力が生成されます。

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |     Delhi |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | 45000
      
(3 rows)

ここでは、テーブルデータが更新されていることを確認できます。

JavaAPIを使用したデータの更新

Sessionクラスのexecute()メソッドを使用して、テーブル内のデータを更新できます。Java APIを使用してテーブルのデータを更新するには、以下の手順に従ってください。

ステップ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 = “ UPDATE emp SET emp_city='Delhi',emp_sal=50000
WHERE emp_id = 2;” ;

以下に示すのは、JavaAPIを使用してテーブル内のデータを更新するための完全なプログラムです。

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

public class Update_Data {
  
   public static void main(String args[]){
      
      //query
      String query = " UPDATE emp SET emp_city='Delhi',emp_sal=50000"
          
      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
         
      //Creating Session object
      Session session = cluster.connect("tp");
         
      //Executing the query
      session.execute(query);

      System.out.println("Data updated");
   }
 }

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

$javac Update_Data.java
$java Update_Data

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

Data updated