【问题标题】:Get total number of inserted rows count in batch insertion Cassandra获取批量插入Cassandra中插入的总行数
【发布时间】:2017-12-15 23:23:18
【问题描述】:
PreparedStatement preparedStatement = session.prepare("INSERT INTO table_name( column1) VALUES(?)");
BatchStatement batch = new BatchStatement();
batch.add(preparedStatement.bind(value1));
batch.add(preparedStatement.bind(value2));
session.execute(batch);

现在我想知道在数据库中插入了多少行。

batch.size();

将只返回批量大小,而不是插入的记录数。

【问题讨论】:

  • 不同分区插入时不建议使用批处理。
  • 是的,你是对的@Alex Ott,但问题是我想知道插入了多少条记录。你有答案吗?
  • 默认BatchStatement被记录,所以如果失败,那么应该重试,否则你会得到异常
  • 在我的情况下,我有一个唯一的键约束,假设 (some_id, created_date) 现在如果我尝试使用以下批次添加 (1,12345) (2, 12345) where (1, 12345 ) 它已经存储了,只有 (2,12345) 将被添加,所以我想知道插入了多少行。所以目前它只添加任何批次的不重复条目,所以我想知道哪些是我的批次的唯一条目。
  • Cassandra 中的插入是 upsert,直到您使用 IF NOT EXISTS

标签: cassandra datastax


【解决方案1】:

在 Cassandra 中默认记录批次,如果成功则保证原子性。因此,您从客户端获得的大小将与插入 Cassandra 的大小相同如果请求成功(否则为 0)。

更多信息在这里:https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlBatch.html#cqlBatch__cql-log-unlog

【讨论】:

  • 在我的情况下,我有一个唯一的键约束,假设 (some_id, created_date) 现在如果我尝试使用以下批次添加 (1,12345) (2, 12345) where (1, 12345 ) 它已经存储了,只有 (2,12345) 将被添加,所以我想知道插入了多少行。
猜你喜欢
  • 1970-01-01
  • 2011-07-03
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-25
  • 2018-03-08
  • 1970-01-01
相关资源
最近更新 更多