嗨,我有一张卡桑德拉桌子。我的桌子上有大约200条记录。后来我更改了表以添加一个名为budget的新列,该列的类型为boolean。我想将该列的默认值设置为true。 cql应该是什么样子。
我正在尝试以下命令,但没有成功
cqlsh:Openmind> update mep_primecastaccount set budget = true ;
SyntaxException: line 1:46 mismatched input ';' expecting K_WHERE
感谢任何帮助 谢谢
答案 0 :(得分:4)
不支持任何需要在读之前在集群范围内读取的操作(因为它无法按Cassandra设计的规模运行)。您必须为更新语句提供分区和群集键。如果只有200条记录快速python脚本,或者可以为您执行此操作。进行SELECT * FROM mep_primecastaccount
并遍历ResultSet。对于每一行,发布一个更新。如果您有更多记录,则可能需要使用spark或hadoop,但对于像这样的小表,可以使用快速脚本来完成。
答案 1 :(得分:0)
但是还有另一种方法也可以处理数十亿行的表:
您可以在客户端代码中处理“默认值”的概念。预先存在的代码根本不会包含“预算”的值:它既不会是true也不是false,但是它将完全丢失(也就是“ null”)。您的客户代码可能会在读取缺少“预算”值的行时,将其替换为其选择的某个默认值,例如“ true”。