小编Кир*_*нко的帖子

如何在Cassandra中更改PARTITION KEY列?

假设我们有这样的表:

create table users (
    id text,
    roles set<text>,
    PRIMARY KEY ((id))
);
Run Code Online (Sandbox Code Playgroud)

我希望这个表的所有值都存储在同一个Cassandra节点上(好的,不是真的一样,相同的3,但是镜像了所有的数据,但是你明白了),所以为了实现我想要改变这个表是这样的:

create table users_v2 (
    partition int,
    id text,
    roles set<text>,
    PRIMARY KEY ((partition), id)
);
Run Code Online (Sandbox Code Playgroud)

如何在不丢失第一个表格的数据的情况下做到这一点?为了添加这样的列,ALTER TABLE似乎是不可能的.我很好.我尝试做的是从第一个表复制数据并插入第二个表.当我按原样执行时,分区列将丢失,这是预期的.我可以改变第一个表并在末尾添加一个"分区"列,然后以正确的顺序复制COPY,但是我无法更新第一个表中的所有行来设置所有的分区,而且似乎没有添加列时的"默认"值.

cql cassandra cqlsh

5
推荐指数
1
解决办法
7022
查看次数

标签 统计

cassandra ×1

cql ×1

cqlsh ×1