繁体   English   中英

CASSANDRA CQL3:更改主键

[英]CASSANDRA CQL3 : Change primary key

目前,我有一个表,其后有1万行主键。

PRIMARY KEY ((deviceid, time), channelname)

我需要得到:

PRIMARY KEY (deviceid, time, channelname)

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

谢谢 ;)

我看到某处必须重建整个桌子。

那是对的。

那么,您是否有一些方法/建议来导出行并将其导入到新表中?

是的,由于完全相同的原因,我只需要在另一周进行此操作。 在cqlsh中,您可以使用COPY实用程序。

要导出我的shipcrewregistry ,我将使用COPY TO

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

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.

有关COPY的更多信息,请查看DataStax文档

只是为了扩大。 CQL语句CREATE TABLE中设置的主键包括分区键。 在Cassandra中,分区键定义了数据将存储在哪个节点上,因此不能更改或更改,因为现在数据将位于错误的节点上。 在您的语句中,您将分区键从(设备标识,时间)更改为设备标识,并且将生成另一个散列来定义数据位置。

当然,在Cassandra中,如果需要以其他方式查询,则可以在两个表中都有数据。 非规范化的乐趣!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM