【发布时间】:2016-07-06 23:27:57
【问题描述】:
我在 Cassandra 集群中创建了一个旧的 keyspace,但发现它的“比较器”的定义是错误的,所以我必须重新创建一个新的 keyspace 并进行数据迁移。有什么工具可以做数据迁移吗?或者我必须使用 Thrift 客户端编程从旧密钥空间读取所有数据并将它们写入新密钥空间?欢迎任何建议或代码sn-ps!
【问题讨论】:
我在 Cassandra 集群中创建了一个旧的 keyspace,但发现它的“比较器”的定义是错误的,所以我必须重新创建一个新的 keyspace 并进行数据迁移。有什么工具可以做数据迁移吗?或者我必须使用 Thrift 客户端编程从旧密钥空间读取所有数据并将它们写入新密钥空间?欢迎任何建议或代码sn-ps!
【问题讨论】:
这是一个常见的问题,我想这里之前已经有人问过了。
您可以在 C* 中使用 COPY 命令。
你会在这里找到更多细节http://www.datastax.com/dev/blog/ways-to-move-data-tofrom-datastax-enterprise-and-cassandra
【讨论】:
我们可以在 cql 中使用COPY 命令来实现。使用COPY 命令,我们可以将表数据保存到 .csv 文件,然后从 .csv 文件返回到表。但是,更好的方法是编写一个程序从表中读取并将其写入另一个表,因为如果表包含集合列类型,如list<text>、map<text, text>、set<text>,则从 csv 导入可能会失败。
例如:- 将表格数据从表格复制到 .csv 文件:-
COPY keyspace1.table1 (column1, column2) TO 'path/to/file/keyspace1_table1.csv';
将 csv 数据从文件复制到表中:-
COPY keyspace2.table1 (column1, column2) FROM 'path/to/file/keyspace1_table1.csv';
【讨论】: