[英]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.