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

时间:2019-06-26 13:21:05

标签: cassandra cql cassandra-2.0 cassandra-3.0 cql3

嗨,我有一张卡桑德拉桌子。我的桌子上有大约200条记录。后来我更改了表以添加一个名为budget的新列,该列的类型为boolean。我想将该列的默认值设置为true。 cql应该是什么样子。

我正在尝试以下命令,但没有成功

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

感谢任何帮助 谢谢

2 个答案:

答案 0 :(得分:4)

不支持任何需要在读之前在集群范围内读取的操作(因为它无法按Cassandra设计的规模运行)。您必须为更新语句提供分区和群集键。如果只有200条记录快速python脚本,或者可以为您执行此操作。进行SELECT * FROM mep_primecastaccount并遍历ResultSet。对于每一行,发布一个更新。如果您有更多记录,则可能需要使用spark或hadoop,但对于像这样的小表,可以使用快速脚本来完成。

答案 1 :(得分:0)

克里斯的答案是正确的-没有有效或可靠的方法来修改数据库中每一行的列值。但是对于200行不变的表,实际上很容易做到。

但是还有另一种方法也可以处理数十亿行的表:

您可以在客户端代码中处理“默认值”的概念。预先存在的代码根本不会包含“预算”的值:它既不会是true也不是false,但是它将完全丢失(也就是“ null”)。您的客户代码可能会在读取缺少“预算”值的行时,将其替换为其选择的某个默认值,例如“ true”。

相关问题