web-dev-qa-db-ja.com

Cassandra UPDATEプライマリキー値

UPDATEではこれが不可能であることを理解しています。

代わりに、PK = 0のすべての行をPK = 1の新しい行に移行します。これを達成する簡単な方法はありますか?

14
greenimpala

比較的簡単な方法として、cqlshでいつでも簡単なCOPY TO/FROMを実行できます。

従業員用の「emp」という列ファミリー(テーブル)があるとします。

CREATE TABLE stackoverflow.emp (
    id int PRIMARY KEY,
    fname text,
    lname text,
    role text
)

この例では、1つの行があります。

aploetz@cqlsh:stackoverflow> SELECT * FROM emp;

 id | fname | lname | role
----+-------+-------+-------------
  1 | Angel |   Pay | IT Engineer

新しいIDでAngelを再作成する場合は、テーブルの内容をCOPY。csvファイルにTOできます。

aploetz@cqlsh:stackoverflow> COPY stackoverflow.emp TO '/home/aploetz/emp.csv';

1 rows exported in 0.036 seconds.

次に、お気に入りのエディターを使用して、emp.csvでAngelのIDを2に変更します。ファイルに複数の行がある場合(更新する必要がない場合)、これはそれらを削除する機会であることに注意してください。

2,Angel,Pay,IT Engineer

ファイルを保存してから、更新された行をCOPYファイルに戻しますCassandra FROM

aploetz@cqlsh:stackoverflow> COPY stackoverflow.emp FROM '/home/aploetz/emp.csv';

1 rows imported in 0.038 seconds.

これで、Angelの「emp」テーブルに2つの行があります。

aploetz@cqlsh:stackoverflow> SELECT * FROM emp;

 id | fname | lname | role
----+-------+-------+-------------
  1 | Angel |   Pay | IT Engineer
  2 | Angel |   Pay | IT Engineer

(2 rows)

詳細については、 COPYのDataStaxドキュメント を確認してください。

18
Aaron