【问题标题】:How to insert multiple rows in one line of insert at cassandra cql?如何在cassandra cql的一行插入中插入多行?
【发布时间】:2019-03-04 14:36:27
【问题描述】:

我有下表称为“设备”:

用户名 |设备ID |设备数据 |用户数据

所有列都是varchars,userid+deviceid是主键。

在表格中插入一行似乎可行:

INSERT INTO devices (userid, deviceid, devicedata, userdata)
VALUES ('user7', 'deviceid1', 'devicedata7', 'userdata1');

但以下不起作用:

INSERT INTO devices (userid, deviceid, devicedata, userdata) 
VALUES (('user8', 'deviceid1', 'devicedata8', 'userdata1'), 
        ('user9', 'deviceid1', 'devicedata9', 'userdata1'));

我得到以下错误:

InvalidRequest: Error from server: code=2200 [Invalid query]
  message="Unmatched column names/values"

如何用一行 INSERT 插入多行?可能吗?我知道有批处理选项。

【问题讨论】:

  • cassandra 是否像mysql一样支持多行插入?
  • 不,你必须使用批处理。查看 Chris Lohfink 的回答

标签: cassandra cql


【解决方案1】:

如果您确实需要,只需发出两个请求或未记录的批处理,但我建议您只发出 2 个不同的异步请求,批处理它们几乎没有负面影响。

【讨论】:

  • 感谢您的回答。看来批量是要走的路。但是我很想知道:是否甚至可以用一行插入来插入多行?至少使用 T-SQL 和 mySQL 是可能的。
  • 是的,已记录和未记录。 unlogged 意味着您只需将两者放在一个单独的请求中进行处理,logged 提供了一些原子性,但代价是更加昂贵。我建议不要这样做,因为它会增加协调器的负载,因为它可以作为多个请求分布在集群中。我想重要的问题是为什么你想一次做多个插入?
猜你喜欢
  • 2016-09-12
  • 2013-07-26
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 2014-07-02
  • 2014-03-13
相关资源
最近更新 更多