Я понимаю, что это невозможно с помощью UPDATE.Значение первичного ключа Cassandra UPDATE
Вместо этого я хотел бы выполнить миграцию всех строк с помощью PK = 0 для новых строк, где PK = 1. Существуют ли какие-либо простые способы достижения этого?
Я понимаю, что это невозможно с помощью UPDATE.Значение первичного ключа Cassandra UPDATE
Вместо этого я хотел бы выполнить миграцию всех строк с помощью PK = 0 для новых строк, где PK = 1. Существуют ли какие-либо простые способы достижения этого?
Для относительно простого способа вы всегда можете быстро выполнить команду COPY
TO/FROM в cqlsh.
Предположим, что у меня есть семейство столбцов (таблица), называемое «emp» для сотрудников.
CREATE TABLE stackoverflow.emp (
id int PRIMARY KEY,
fname text,
lname text,
role text
)
И для целей этого примера у меня есть одна строка.
[email protected]:stackoverflow> SELECT * FROM emp;
id | fname | lname | role
----+-------+-------+-------------
1 | Angel | Pay | IT Engineer
Если я хочу, чтобы воссоздать Angel с новым идентификатором, я могу COPY
содержимое таблицы в TO
файл .csv:
[email protected]:stackoverflow> COPY stackoverflow.emp TO '/home/aploetz/emp.csv';
1 rows exported in 0.036 seconds.
Теперь, я буду использовать мой любимый текстовый редактор, чтобы изменить id от ангела до 2 в emp.csv. Обратите внимание, что если у вас есть несколько строк в файле (которые не нуждаются в обновлении) это ваша возможность удалить их:
2,Angel,Pay,IT Engineer
Я сохранить файл, а затем COPY
обновленный ряд назад в Кассандре FROM
файл:
[email protected]:stackoverflow> COPY stackoverflow.emp FROM '/home/aploetz/emp.csv';
1 rows imported in 0.038 seconds.
Теперь Angel имеет две строки в таблице "EMP".
[email protected]:stackoverflow> SELECT * FROM emp;
id | fname | lname | role
----+-------+-------+-------------
1 | Angel | Pay | IT Engineer
2 | Angel | Pay | IT Engineer
(2 rows)
Для получения дополнительной информации проверьте DataStax doc on COPY.
Спасибо за ответ. К сожалению, мой идентификатор является частью составного первичного ключа и поэтому дублируется (возможно, тысячи раз). Изменение текстового редактора вручную невозможно. Возможно ли передавать данные с помощью COPY ... изменить ключ ... и передать его обратно одним инструментом? – greenimpala
Любой водитель сделает это довольно легко. Для одноразового использования я бы выбрал драйвер python datastax. Просто запросите нужные строки, измените значения и запишите их обратно в таблицу. Если вы хотите, чтобы я расширил это, скажите так, и я получу полный ответ ниже. – mildewey
@greenimpala Mildewey прав, вам, вероятно, будет проще написать быстрый скрипт Python для этого. – Aaron