我知道使用UPDATE命令无法实现此操作。
相反,我想做的是将所有主键为0的行迁移到新的主键为1的行。是否有简单的方法来实现这一点?
如果你想要一个相对简单的方法,你可以在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
COPY
命令将表格内容 TO
一个.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:
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关于COPY的文档。