在cassandra中对1列运行批量更新查询

在cassandra中对1列运行批量更新查询,cassandra,cql3,cqlsh,Cassandra,Cql3,Cqlsh,我们有一个场景,cassandra中的一个表有超过百万条记录,我们希望对一个列执行批量更新,基本上在整个表中将列值设置为null 有没有办法做到这一点,因为下面的查询在CQL中不起作用 UPDATE TABLE_NAME SET COL1=NULL WHERE PRIMARY_KEY IN(SELECT PRIMARY_KEY FROM TABLE_NAME ); 注-该列不是主键或群集键。前几天有一个类似的问题,关于……我建议也阅读从列表中删除列的部分 这种情况下的一种解决方案可能是删除列并

我们有一个场景,cassandra中的一个表有超过百万条记录,我们希望对一个列执行批量更新,基本上在整个表中将列值设置为null

有没有办法做到这一点,因为下面的查询在CQL中不起作用

UPDATE TABLE_NAME SET COL1=NULL WHERE PRIMARY_KEY IN(SELECT PRIMARY_KEY FROM TABLE_NAME );

注-该列不是主键或群集键。

前几天有一个类似的问题,关于……我建议也阅读从列表中删除列的部分

这种情况下的一种解决方案可能是删除列并重新添加它

如果删除列,然后重新添加,则Cassandra不会恢复 在删除列之前写入的值。后续选择 此列不返回删除的数据


我会事先在测试系统上进行测试,然后检查墓碑是否已被移除。

前几天也有类似的问题,关于……我建议也阅读从网站上删除一列的部分

这种情况下的一种解决方案可能是删除列并重新添加它

如果删除列,然后重新添加,则Cassandra不会恢复 在删除列之前写入的值。后续选择 此列不返回删除的数据


我会事先在测试系统上测试这一点,并检查墓碑是否已被删除。

除了遍历每一行并更新值之外,没有其他方法可以通过CQL来实现这一点

然而,如果你有冒险精神,也许有办法做到这一点

您可以使用cqlsh中的COPY将表的数据输出到文件中。使用像sed这样的工具,您可以修改此文本文件以更改列,然后将同一文件重新导入cassandra

这个解决方案不是最优的,可能对某些数据集不起作用,但它完成了任务


就我个人而言,我仍然更喜欢迭代而不是这样做。

除了迭代每一行并更新值之外,通过CQL真的没有其他方法可以做到这一点

然而,如果你有冒险精神,也许有办法做到这一点

您可以使用cqlsh中的COPY将表的数据输出到文件中。使用像sed这样的工具,您可以修改此文本文件以更改列,然后将同一文件重新导入cassandra

这个解决方案不是最优的,可能对某些数据集不起作用,但它完成了任务

就我个人而言,我仍然更喜欢迭代而不是这样做