×

Cassandra 教程

Cassandra 简介Cassandra 架构Cassandra 数据模型Cassandra 安装Cassandra 参考APICassandra CqlshCassandra Shell命令

Cassandra 键空间操作

Cassandra 创建键空间Cassandra 修改键空间Cassandra 删除键空间

Cassandra 表操作

Cassandra 创建表Cassandra 修改表Cassandra 删除表Cassandra 截断表Cassandra 创建索引Cassandra 删除索引Cassandra 批处理

Cassandra CURD操作

Cassandra 创建数据Cassandra 更新数据Cassandra 读取数据Cassandra 删除数据

Cassandra CQL数据类型

Cassandra CQL数据类型Cassandra CQL集合Cassandra CQL用户定义的数据类型

Cassandra 相关资源

Cassandra 相关资源Cassandra 相关讨论

Cassandra 批处理


使用Cqlsh执行批处理语句

使用BATCH,您可以同时执行多个修改语句(插入,更新,删除)。其语法如下:

BEGIN BATCH
/ / 
APPLY BATCH

示例

假设Cassandra中有一个名为emp的表,具有以下数据:

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

在这个例子中,我们将执行以下操作:

  • 插入包含以下详细信息的新行(4,rajeev,pune,9848022331,30000)。
  • 将行号为3的员工的工资更新为50000。
  • 删除行ID为2的员工的城市。

要一次性执行上述操作,请使用以下BATCH命令:

cqlsh:bootwiki> BEGIN BATCH
... INSERT INTO emp (emp_id, emp_city, emp_name, emp_phone, emp_sal) values(  4,'Pune','rajeev',9848022331, 30000);
... UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;
... DELETE emp_city FROM emp WHERE emp_id = 2;
... APPLY BATCH;

验证

更改后,使用SELECT语句验证表。它应该产生以下输出:

cqlsh:bootwiki> 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)

这里可以观察具有修改数据的表。

使用Java API的批处理语句

可以使用Session类的execute()方法以编程方式在表中编写批处理语句。按照下面给出的步骤在Java API的帮助下使用批处理语句执行多个语句。

第1步:创建集群对象

创建一个名为com.datastax.driver.coreCluster.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();

您可以使用单行代码构建集群对象,如下所示。

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上执行。

在这个例子中,我们将执行以下操作:

  • 插入包含以下详细信息的新行(4,rajeev,pune,9848022331,30000)。
  • 将行号为3的员工的工资更新为50000。
  • 删除行ID为2的员工所在的城市。

您必须将查询存储在字符串变量中,并将其传递给execute()方法,如下所示。

String query1 = ” BEGIN BATCH INSERT INTO emp (emp_id, emp_city, emp_name,   emp_phone, emp_sal) values( 4,'Pune','rajeev',9848022331, 30000);
UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;
DELETE emp_city FROM emp WHERE emp_id = 2;
APPLY BATCH;”;

下面给出的是使用Java API在Cassandra中的表上同时执行多个语句的完整程序。

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

public class Batch {

   public static void main(String args[]){
    
      //query
      String query =" BEGIN BATCH INSERT INTO emp (emp_id, emp_city,
         emp_name, emp_phone, emp_sal) values( 4,'Pune','rajeev',9848022331, 30000);"
    
         + "UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;"
         + "DELETE emp_city FROM emp WHERE emp_id = 2;"
         + "APPLY BATCH;";

      //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("Changes done");
   }
}

使用类名称和.java保存上述程序,浏览到保存位置。编译并执行程序如下所示。

$javac Batch.java
$java Batch

在正常条件下,它应该产生以下输出:

Changes done

分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)