Cassandra ColumnFamily間で同じキースペース上の別のデータにデータをコピーするための良い方法は何ですか(SQLのINSERT INTOのように)?


11

Cassandra ColumnFamily / Tableから別の行にすべての行を簡単に転送する方法を見つけようとしています。

COPYコマンドは、私が理解し、適切なオプションです。ただし、すべてのデータを.csvディスクにダンプしてからロードし直すので、エンジン内で実行するより良い方法があるかどうか疑問に思わずにはいられません。

私が意味することの具体的な例はINSERT * FROM my_table INTO my_other_table、多くのSQLデータベースで利用可能であろう。もちろん、私はCassandraがNoSQLであり、したがって同じように機能しないことを理解していますが、それは利用可能なもののようです。

これを達成するための良い方法は何ですか?

どうもありがとう!

回答:


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

1
ありがとう、これは面白そうだ。ただし、特に特定のタイプのデータを処理する場合は、文字のエスケープやその他の問題について心配します。それはまったく心配ですか?
ファンカルロスコト2014

1
良い考えですが、@ JuanCarlosCotoが言ったように、特定のデータ型では機能しません。blob列のあるテーブルで試してみたところ、改行文字でクラッシュしました。
Alexandre DuBreuil、2015年

cassandra 2.1.2では、COPYの出力の最後にトリミングする必要がある2行が含まれているため、コマンドをhead -n -2に変更する必要がありました。それはまだ機能していましたが、最後の空の行に腹を立てました。
ctlacko

注-COPY FROMは、200万行未満のデータセットをインポートする場合にのみ使用してください。大きなデータセットをインポートするには、Cassandraバルクローダーを使用します。
GaneshP 2018年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.