如何将列更新为cassandra表中的特定值?

rta7y2nd  于 2021-06-14  发布在  Cassandra
关注(0)|答案(2)|浏览(557)

嗨,我要一张Cassandra桌。我的table上有大约200张唱片。后来我修改了这个表,添加了一个名为budget的新列,它的类型是boolean。我想将该列的默认值设置为true。cql应该是什么样子的。
我正在尝试以下命令,但它没有工作

cqlsh:Openmind> update mep_primecastaccount set budget = true ;
SyntaxException: line 1:46 mismatched input ';' expecting K_WHERE

谢谢你的帮助谢谢

0h4hbjxa

0h4hbjxa1#

chris的回答是正确的-没有有效或可靠的方法来修改数据库中每一行的列值。但是对于一个200行的表来说,它并没有并行变化,这实际上是非常容易做到的。
但还有另一种方法也可以用于数十亿行的表:
您可以在客户机代码中处理“默认值”的概念。预先存在的代码将根本没有“budget”的值:它既不是真的,也不是假的,而是完全丢失的(即“null”)。当客户机代码读取缺少“budget”值的行时,可以将其替换为所选的某个默认值,例如“true”。

xqnpmsa8

xqnpmsa82#

任何需要在写之前进行集群范围的读操作都是不受支持的(因为它在cassandra设计的范围内不起作用)。必须为update语句提供分区和群集密钥。如果只有200条记录,我们可以用python脚本来完成。做一个 SELECT * FROM mep_primecastaccount 并遍历结果集。对每一行发布一个更新。如果你有更多的记录,你可能想使用spark或者hadoop,但是对于这样一个小的表,一个快速的脚本就可以做到。

相关问题