什么是将数据从一个Cassandra ColumnFamily复制到同一键空间上的另一个好方法(例如SQL的INSERT INTO)?


11

试图找到一种将所有行从Cassandra ColumnFamily / Table轻松转移到另一行的方法。

COPY我了解,该命令是一个不错的选择。但是,由于它将所有数据转储到.csv磁盘上然后再加载回去,我不禁想知道是否有更好的方法可以在引擎内完成。

我的意思的一个具体示例将INSERT * FROM my_table INTO my_other_table在许多SQL数据库中可用。当然,我意识到Cassandra是NoSQL,因此不能以相同的方式工作-但似乎可以使用。

有什么好的方法可以做到这一点?

非常感谢!

Answers:


10
cqlsh -k mykeyspace -e 'COPY fromTable(columnNames) TO STDOUT' | head -n -1 | 
cqlsh -k mykeyspace -e 'COPY toTable(columnNames) FROM STDIN'

1
谢谢,这看起来很有趣。但是,我会担心字符转义和其他问题,尤其是在处理某些类型的数据时。这是一个问题吗?
Juan Carlos Coto 2014年

1
好主意,但正如@JuanCarlosCoto所说,它不适用于某些数据类型。我在带有Blob列的表上尝试过,但在换行符上崩溃了。
Alexandre DuBreuil 2015年

在cassandra 2.1.2上,我必须将命令修改为head -n -2,因为COPY的输出在末尾包括两行,需要进行修剪。它仍然在工作,但最后却为空行感到生气。
ctlacko 2015年

注意-仅使用COPY FROM导入少于200万行的数据集。要导入大型数据集,请使用Cassandra批量加载器。
GaneshP '18 -10-9

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.