cassandra将数据从一个列家庭复制到另一个列家庭

时间:2013-07-09 07:16:18

标签: cassandra cassandra-cli

我是cassandra的新手。我需要在cassandra中的相同键空间中将数据从一个columnFamily复制到另一个columnFamily。因为我们在键空间K1中有一个A1 columnFamily,所以现在我需要在相同的键空间K1中创建columnFamily A2。我需要从中复制数据columnFamily A1到A2 .A1和A2具有相同的模式。我读了在线文档,我们可以使用sstable加载程序将数据从一个cassandra集群复制到另一个。但是在这里我需要将数据从一个columnFamily复制到同一个键空间内的另一个columnFamily。

上述任何想法。或者它是可以实现的我不确定。

3 个答案:

答案 0 :(得分:10)

根据cassandra版本,您可以使用copy cql命令。要使用它,您需要一个css客户端,例如使用cassandra分发的客户端。

首先,您必须使用以下方法将columnfamily A1复制到CSV文件:

COPY K1.A1 (column1, column2,...) TO 'temp.csv';

然后将文件复制到新列族

COPY K1.A2 (column1, column2,...) FROM 'temp.csv';

显然,您必须将列名更改为您的名字。

更多信息:

http://www.datastax.com/documentation/cassandra/1.2/index.html#cassandra/cql_reference/copy_r.html

答案 1 :(得分:2)

请注意最大限制。使用COPY命令时有200万行。见https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlshCopy.html

  

注意:仅使用COPY FROM导入行数少于200万的数据集。要导入大型数据集,请使用Cassandra批量加载程序

答案 2 :(得分:0)

cqlsh -k mykeyspace -e' COPY fromTable(columnNames)to STDOUT' |头-n -1 | cqlsh -k mykeyspace -e' COPY toTable(columnNames)FROM STDIN'