Який хороший спосіб скопіювати дані з однієї Cassandra ColumnFamily в іншу в той же Keyspace (як INSERT INTO SQL)?


11

Намагаючись знайти спосіб легко перенести всі рядки з Кассандрської колонки в сім'ї / таблиці до іншого.

COPYКоманда, як я розумію, це варіант хороший. Однак, оскільки він скидає всі дані .csvна диск, а потім завантажує їх назад, я не можу не задатися питанням, чи є кращий спосіб зробити це в двигуні.

Конкретним прикладом того, що я маю на увазі, є INSERT * FROM my_table INTO my_other_tableдоступність у багатьох SQLбазах даних. Звичайно, я розумію, що Кассандра - це NoSQL, і тому працює не так - але це здається чимось доступним.

Який хороший спосіб досягти цього?

Дуже дякую!

Відповіді:


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

1
Дякую, це виглядає цікаво. Однак мене б хвилювали проблеми втечі персонажів та інші проблеми, особливо при роботі з певними типами даних. Це взагалі турбота?
Хуан Карлос Кото

1
Гарна ідея, але, як сказав @JuanCarlosCoto, вона не працює з певними типами даних. Я спробував це на столі зі стовпчиком, і він розбився на символі нового рядка.
Олександр ДюБрей

На кассандрі 2.1.2 мені довелося змінити команду бути head -n -2, оскільки вихід COPY включає два рядки в кінці, які потрібно обрізати. Це все ще працювало, але він розізлився з приводу порожнього рядка наприкінці.
ctlacko

Примітка. Використовуйте COPY FROM лише для імпорту наборів даних, що мають менше 2 мільйонів рядків. Щоб імпортувати великі набори даних, використовуйте навальний навантажувач Cassandra.
GaneshP

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.