在CQL中将列中的所有值设置为null的最简单方法是什么?

时间:2015-01-06 22:58:40

标签: cassandra

如果它有帮助,我想将它们全部设置为NULL,就像在update foo set barcol = null中一样。此特定命令导致对缺少主键约束的抱怨。对于select语句,可以通过添加子句allow filtering来解决类似的错误。在这种情况下是否有类似的解决方法?如果没有,最简单的方法是什么?

更新:有什么比这个不太好的解决方案更好吗?

cqlsh -e 'select id from foo' | head -n -3 | tail -n +4 | \
  xargs -I{} cqlsh -e "update foo set barcol = null where id = '{}'"

1 个答案:

答案 0 :(得分:1)

如果您只删除列并重新创建它以确保内容为null,我已经看到了有关C *中问题的讨论。我认为重命名列,添加新列然后删除重命名的列是最安全的方法。

所以

ALTER TABLE RENAME col TO col_deleted

ADD COLUMN col <type>

ALTER TABLE DROP COLUMN col_deleted

在我看来,这是确保只有空值的最佳方式。