Que*_*OIS 5 database cql cassandra cql3 cqlsh
对于我的Cassandra数据库,我需要在列中为表中的所有行设置一个值.
我在SQL中看到,我们可以做到:
UPDATE table SET column1= XXX;
Run Code Online (Sandbox Code Playgroud)
但在CQL(在cqlsh中),它不起作用!我不希望逐行更新,直到9500行.
你有什么建议吗?
谢谢 :)
小智 5
您可以使用带有 IN 子句的更新查询,而不是执行 9500 查询。首先从表中选择 primary_key ,然后将值复制到此查询:
UPDATE table SET column1 = XXX WHERE primary_key IN (p1, p2, p3, ...);
Run Code Online (Sandbox Code Playgroud)
正如您所发现的,CQL!= SQL。除了迭代表中的每一行之外,无法执行您在 CQL 中要求的操作。
罗伯特关于重新定义column1
为静态列的建议可能会有所帮助。但静态列与其分区键相关联,因此您仍然需要指定:
aploetz@cqlsh:stackoverflow2> UPDATE t SET s='XXX' WHERE k='k';
Run Code Online (Sandbox Code Playgroud)
另外,听起来您只想能够为所有行设置列值。如果您希望分区内的 CQL 行的列值不同(来自 DataStax 文档中的示例),静态列将不适合您:
aploetz@cqlsh:stackoverflow2> INSERT INTO t (k, s, i) VALUES ('k', 'I''m shared', 0);
aploetz@cqlsh:stackoverflow2> INSERT INTO t (k, s, i) VALUES ('k', 'I''m still shared', 1);
aploetz@cqlsh:stackoverflow2> SELECT * FROM t;
k | i | s
---+---+------------------
k | 0 | I'm still shared
k | 1 | I'm still shared
(2 rows)
Run Code Online (Sandbox Code Playgroud)
请注意,分区键下的所有 CQL 行中的列值s
都是相同的k
。只是为了让您了解它是如何工作的。
归档时间: |
|
查看次数: |
6368 次 |
最近记录: |