首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CASSANDRA CQL3 :更改主键

CASSANDRA CQL3 :更改主键
EN

Stack Overflow用户
提问于 2015-08-05 20:53:43
回答 2查看 1.7K关注 0票数 3

目前,我有一个表,下面是10K行的主键。

代码语言:javascript
复制
PRIMARY KEY ((deviceid, time), channelname)

我需要得到:

代码语言:javascript
复制
PRIMARY KEY (deviceid, time, channelname)

我在某个地方看到,我必须重建我的整个桌子。那么,您是否有一些方法/建议来导出我的行,并将它们导入到我的新表中?

谢谢;)

EN

回答 2

Stack Overflow用户

发布于 2015-08-05 22:06:09

我在什么地方看到的,

,我必须重建我的整个表格。

这是正确的。

那么,您有什么方法/建议可以导出我的行并将它们导入到我的新表中吗?

是的,前几周我也是出于同样的原因不得不这么做的。在cqlsh中,您可以使用COPY实用程序。

为了导出shipcrewregistry表,我将使用COPY TO

代码语言:javascript
复制
aploetz@cqlsh:presentation> COPY shipcrewregistry (shipname , lastname , firstname , 
    citizenid , aliases) TO '/home/aploetz/shipcrewreg_20150805.txt' 
    WITH HEADER=true AND DELIMITER='|';

9 rows exported in 0.026 seconds.

为了导入它,我将使用COPY FROM来重新创建表

代码语言:javascript
复制
aploetz@cqlsh:presentation> COPY shipcrewregistry (shipname , lastname , firstname ,
    citizenid , aliases) FROM '/home/aploetz/shipcrewreg_20150805.txt' 
    WITH HEADER=true AND DELIMITER='|';

9 rows imported in 0.636 seconds.

有关复制的更多信息,请查看DataStax docs

票数 4
EN

Stack Overflow用户

发布于 2015-09-15 13:18:48

只是为了扩大规模。在CQL语句CREATE TABLE中设置的主键包括分区键。在Cassandra中,分区键定义数据将存储在哪个节点上,因此它不能被更改或更改,因为数据现在可能在错误的节点上。在您的语句中,您将分区键从(deviceid,time)更改为deviceid,并且将生成不同的散列来定义数据位置。

当然,在Cassandra中,如果您需要以不同的方式进行查询,那么您可以同时拥有这两个表中的数据。非正规化的乐趣!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31833137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档