2013-08-07 18 views
17

CQLSHで作成したテーブルの名前を変更しようとしています。 など。テーブル "AAA"を "BBB"にリネームします。これを行うコマンドが見つかりません。何か案は?Cassandra CQL3のテーブルの名前を変更するには

[cqlsh 3.1.6 |カサンドラ1.2.8 | CQL仕様3.0.0 | Thriftプロトコル19.36.0]

答えて

23

テーブルやキースペースの名前を変更することはできません。それを行うためのCQL3操作はありません。また、正しく記憶されていれば、古いThirftインターフェイスには何もありません。

カサンドラがその分散的性質のために行うことは非常に難しいことではないという理由の1つは、変更を原子的に行うことができないため、クラスタが矛盾した状態になり、更新が失われる可能性があります。テーブルの作成と削除に似ていますが、そのような場合は、テーブルの作成前または削除後に更新が失われることが予想されます。

私が尋ねることを行う唯一の方法は、新しいテーブルを作成し、古いものから新しいものまですべてのデータを移動し、古いテーブルを削除することです。データを移動することなくそれを行う方法があるかもしれませんが、おそらくクラスタを停止し、テーブルに属するすべてのディレクトリとファイルの名前を変更し、system.schema_columnfamiliesテーブルのメタデータを変更する必要があります(ただし、あなたもそれをすることができるかどうかわからない)。

+0

vkroz:上記の解決策を試しましたか? – Ztyx

+1

あるテーブルを別のテーブルにコピーする方法はありますか? –

+0

私はこれが保留だと知っていますが、次の人がそれに遭遇した場合に備えて...あるテーブルから別のテーブルにデータを挿入する最も良い方法は、データをエクスポートして次のテーブルにインポートすることです。表の名前を変更する場合は、エクスポートを行い、新しい表を作成してからデータをインポートします。エクスポート後、いつでも古いテーブルを削除できます。 https://docs.datastax.com/en/cql/3.1/cql/cql_reference/copy_r.html – ammills01

関連する問題