Значение первичного ключа Cassandra UPDATE

Я понимаю, что это невозможно с помощью UPDATE.

Вместо этого я хотел бы выполнить миграцию всех строк с помощью PK = 0 для новых строк, где PK = 1. Существуют ли какие-либо простые способы достижения этого?

Ответ 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 с новым id, я могу COPY содержимое таблицы TO. CSV файл:

[email protected]:stackoverflow> COPY stackoverflow.emp TO '/home/aploetz/emp.csv';

1 rows exported in 0.036 seconds.

Теперь я буду использовать свой любимый редактор, чтобы изменить id Angel на 2 в emp.csv. Обратите внимание, что если у вас несколько файлов в файле (которые не нужно обновлять), это ваша возможность удалить их:

2,Angel,Pay,IT Engineer

Я сохраню файл, а затем COPY обновленную строку обратно в Cassandra FROM файл:

[email protected]:stackoverflow> COPY stackoverflow.emp FROM '/home/aploetz/emp.csv';

1 rows imported in 0.038 seconds.

Теперь Ангел имеет две строки в таблице "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 на COPY.