Cassandra-delete-data

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

Cassandra-データの削除

テーブルからデータを削除する

コマンド DELETE を使用して、テーブルからデータを削除できます。 その構文は次のとおりです-

DELETE FROM <identifier> WHERE <condition>;

Cassandraに emp というテーブルがあり、次のデータがあると仮定します-

emp_id emp_name emp_city emp_phone emp_sal
1 ram Hyderabad 9848022338 50000
2 robin Hyderabad 9848022339 40000
3 rahman Chennai 9848022330 45000

次のステートメントは、最後の行のemp_sal列を削除します-

cqlsh:finddevguides> DELETE emp_sal FROM emp WHERE emp_id=3;

検証

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

cqlsh:finddevguides> 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 | null
(3 rows)

ラーマンの給与を削除したため、給与の代わりにヌル値が表示されます。

行全体を削除する

次のコマンドは、テーブルから行全体を削除します。

cqlsh:finddevguides> DELETE FROM emp WHERE emp_id=3;

検証

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

cqlsh:finddevguides> select* from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |     Delhi |    robin | 9848022339 | 50000

(2 rows)

最後の行を削除したため、テーブルには2行しか残っていません。

Java APIを使用したデータの削除

Sessionクラスのexecute()メソッドを使用して、テーブル内のデータを削除できます。 以下の手順に従って、Java APIを使用してテーブルからデータを削除します。

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

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

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();
*Cluster.Builder* オブジェクトの* addContactPoint()*メソッドを使用して、接点(ノードのIPアドレス)を追加します。 このメソッドは *Cluster.Builder* を返します。
//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

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

//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();

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

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

ここでは、 tp というキースペースを使用しています。 したがって、次のようにセッションオブジェクトを作成します。

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

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

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

次の例では、* emp。という名前のテーブルからデータを削除しています。以下に示すように、クエリを文字列変数に保存し、 execute()*メソッドに渡す必要があります。

String query1 = ”DELETE FROM emp WHERE emp_id=3; ”;
session.execute(query);

Java APIを使用してCassandraのテーブルからデータを削除する完全なプログラムを以下に示します。

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

public class Delete_Data {

   public static void main(String args[]){

     //query
      String query = "DELETE FROM emp WHERE emp_id=3;";

     //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 deleted");
   }
}

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

$javac Delete_Data.java
$java Delete_Data

通常の状態では、次の出力を生成する必要があります-

Data deleted