Cách tốt để sao chép dữ liệu từ một Cassandra Cột này sang một nhóm khác trên cùng một Không gian khóa (như INSERT INTO của SQL) là gì?


11

Cố gắng tìm cách dễ dàng chuyển tất cả các hàng từ Cột / Bảng Cassandra sang Bảng khác.

Các COPYlệnh, như tôi hiểu, là một lựa chọn tốt. Tuy nhiên, vì nó bỏ tất cả dữ liệu .csvvào đĩa và sau đó tải lại, tôi không thể tự hỏi liệu có cách nào tốt hơn để thực hiện trong động cơ không.

Một ví dụ cụ thể về những gì tôi muốn nói sẽ INSERT * FROM my_table INTO my_other_tablecó sẵn trong nhiều SQLcơ sở dữ liệu. Tất nhiên, tôi nhận ra rằng Cassandra là NoQuery và do đó không hoạt động theo cùng một cách - nhưng có vẻ như thứ gì đó có thể có sẵn.

Một cách tốt để thực hiện điều này là gì?

Cảm ơn rất nhiều!

Câu trả lời:


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

1
Cảm ơn, điều này có vẻ thú vị. Tuy nhiên, tôi lo ngại về việc thoát nhân vật và các vấn đề khác, đặc biệt là khi xử lý một số loại dữ liệu nhất định. Đó có phải là một mối quan tâm ở tất cả?
Juan Carlos Coto

1
Ý tưởng tốt, nhưng như @JuanCarlosCoto đã nói, nó không hoạt động với một số loại dữ liệu nhất định. Tôi đã thử nó trên một cái bàn có cột blob và nó bị sập trên một ký tự dòng mới.
Alexandre DuBreuil

Trên cassandra 2.1.2, tôi đã phải sửa đổi lệnh thành head -n -2 vì thông số của COPY bao gồm hai dòng ở cuối cần được cắt bớt. Nó vẫn còn hoạt động, nhưng cuối cùng nó đã phát điên về dòng trống.
ctlacko 1/10/2015

Lưu ý - Chỉ sử dụng SAO CHÉP TỪ để nhập bộ dữ liệu có ít hơn 2 triệu hàng. Để nhập bộ dữ liệu lớn, hãy sử dụng trình tải số lượng lớn Cassandra.
GaneshP

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.