2013-07-09 2 views
9

Я новичок в cassandra. Мне нужно скопировать данные из одного столбца в другой столбец. В том же ключевом пространстве в кассандре. Скажем, у нас есть A1 columnFamily в пространстве ключей K1, поэтому теперь мне нужно создать columnFamily A2 в том же ключевом пространстве K1. Здесь мне нужно скопировать данные из columnFamily A1 to A2 .A1 и A2 имеют одну и ту же схему. Я читаю онлайн-документы, в которых мы можем использовать sstable-загрузчик для копирования данных из одного кластера cassandra в другой. Но здесь мне нужно скопировать данные из одного столбцаFamily в другой columnFamily в пределах того же ключевого пространства.cassandra копировать данные из одного столбцасемей в другой columnfamily

Любые идеи выше. Или это достижимо, я не уверен в этом.

ответ

9

В зависимости от версии cassandra вы можете использовать команду copy cql. Чтобы использовать это, вам нужен клиент cql, такой как тот, который распределяется с помощью cassandra.

Сначала вы должны скопировать ColumnFamily A1 в файл CSV с помощью:

COPY K1.A1 (column1, column2,...) TO 'temp.csv'; 

И после этого скопировать файл в новой семье колонке

COPY K1.A2 (column1, column2,...) FROM 'temp.csv'; 

Очевидно, что вы должны изменить имя столбцов к вашим именам.

Дополнительная информация:

http://www.datastax.com/documentation/cassandra/1.2/index.html#cassandra/cql_reference/copy_r.html

+0

Привет, спасибо. я обязательно попробую этот вариант. – user1278493

+0

Пожалуйста, если решения будут работать для вас, проверьте ответ как правильный, чтобы другой человек, у которого есть такое же сомнение, может проверить, что это способ, которым нужно идти. – ftrujillo

+0

Я пытаюсь сделать то же самое, но он дает мне ошибку что-то вроде недопустимой константы STRING, ранее вставленные значения все еще присутствуют. Так что необходимо обрезать данные после выполнения COPY K1.A1 (column1, column2 ,. ..) TO 'temp.csv'; шаг .. –

0

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

1

Обратите внимание на ограничение макс. 2 миллиона строк при использовании команды COPY. См. https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlshCopy.html

Примечание: Используйте только COPY FROM для импорта наборов данных, содержащих менее 2 миллионов строк. Чтобы импортировать большие наборы данных, используйте загрузчик Cassandra

Смежные вопросы