【问题标题】:How can i update the column to a particular value in a cassandra table?如何将列更新为 cassandra 表中的特定值?
【发布时间】:2019-11-08 11:02:57
【问题描述】:
您好,我有一张 cassandra 桌子。我的表中有大约 200 条记录。后来我更改了表格,添加了一个名为 budget 的新列,它的类型为 boolean 。我想将该列的默认值设置为 true。 cql 应该是什么样子。
我正在尝试以下命令,但没有成功
cqlsh:Openmind> update mep_primecastaccount set budget = true ;
SyntaxException: line 1:46 mismatched input ';' expecting K_WHERE
感谢任何帮助
谢谢你
【问题讨论】:
标签:
cassandra
cql
cassandra-2.0
cassandra-3.0
cql3
【解决方案1】:
不支持任何需要在写入前进行集群范围读取的操作(因为它无法在 Cassandra 设计的规模下工作)。您必须为更新语句提供分区和集群键。如果只有 200 条记录,一个快速的 python 脚本或者可以为你做这个。执行 SELECT * FROM mep_primecastaccount 并遍历 ResultSet。为每一行发布一个更新。如果您有更多记录,您可能想使用 spark 或 hadoop,但对于像这样的小表,快速脚本可以做到。
【解决方案2】:
Chris 的回答是正确的 - 没有有效或可靠的方法来修改数据库中每一行的列值。但是对于一个不并行变化的 200 行表来说,其实很容易做到。
但还有另一种方法也可以处理数十亿行的表:
您可以在客户端代码中处理“默认值”的概念。预先存在的代码根本没有“预算”的价值:它既不是真也不是假,而是完全缺失(又名“空”)。您的客户端代码可能会在读取缺少“预算”值的行时,将其替换为其选择的某个默认值 - 例如,“true”。