【发布时间】:2015-01-17 07:04:25
【问题描述】:
我了解使用 UPDATE 无法做到这一点。
我想做的是将所有 PK=0 的行迁移到 PK=1 的新行。有什么简单的方法可以实现吗?
【问题讨论】:
我了解使用 UPDATE 无法做到这一点。
我想做的是将所有 PK=0 的行迁移到 PK=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
如果我想用新的 id 重新创建 Angel,我可以 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 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。
【讨论】: