Cassandra UPDATE主键值

时间:2014-11-19 16:46:43

标签: cassandra cql cqlsh

我知道使用UPDATE是不可能的。

我想做的是将PK = 0的所有行迁移到PK = 1的新行。有没有简单的方法来实现这个目标?

1 个答案:

答案 0 :(得分:18)

对于一种相对简单的方法,你总是可以在cqlsh中快速COPY TO / FROM。

假设我有一个名为“emp”的列族(表)给员工。

CREATE TABLE stackoverflow.emp (
    id int PRIMARY KEY,
    fname text,
    lname text,
    role text
)

就本例而言,我有一行。

aploetz@cqlsh:stackoverflow> SELECT * FROM emp;

 id | fname | lname | role
----+-------+-------+-------------
  1 | Angel |   Pay | IT Engineer

如果我想用新的id重新创建Angel,我可以COPY表的内容TO a .csv文件:

aploetz@cqlsh:stackoverflow> COPY stackoverflow.emp TO '/home/aploetz/emp.csv';

1 rows exported in 0.036 seconds.

现在,我将使用我最喜欢的编辑器在emp.csv中将Angel的id更改为2。请注意,如果您的文件中有多行(不需要更新),则可以将其删除:

2,Angel,Pay,IT Engineer

我将保存文件,然后将COPY更新后的行重新保存到Cassandra FROM文件中:

aploetz@cqlsh:stackoverflow> COPY stackoverflow.emp FROM '/home/aploetz/emp.csv';

1 rows imported in 0.038 seconds.

现在Angel在“emp”表中有两行。

aploetz@cqlsh:stackoverflow> SELECT * FROM emp;

 id | fname | lname | role
----+-------+-------+-------------
  1 | Angel |   Pay | IT Engineer
  2 | Angel |   Pay | IT Engineer

(2 rows)

有关详细信息,请查看DataStax doc on COPY

相关问题