Cassandraの特定の列ファミリーからすべての行を削除する方法を探しています。
これは、SQLのTRUNCATE TABLE
と同等です。
truncate
thrift呼び出し、またはTRUNCATE <table>
CQLのコマンド。
Cassandra CQL。
$ cqlsh
Connected to Test Cluster at localhost:9160.
[cqlsh 4.1.1 | Cassandra 2.0.6 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
Use HELP for help.
cqlsh> TRUNCATE my_keyspace.my_column_family;
Astyanaxでは非常にシンプルです。単一行ステートメント
/* keyspace variable is Keyspace Type */
keyspace.truncateColumnFamily(ColumnFamilyName);
Hectorを使用している場合も簡単です。
cluster.truncate("our keyspace name here", "your column family name here");
Cqlshを使用している場合は、2つの方法のいずれかで実行できます
use keyspace
;その後 truncate column_family;
truncate keyspace.column_family;
DataStax Java driverを使用する場合は、- http://www.datastax.com/drivers/Java/1.0/com/datastax/driver/coreをご覧ください。 /querybuilder/QueryBuilder.html または http://www.datastax.com/drivers/Java/2.0/com/datastax/driver/core/querybuilder/Truncate.html
バージョンによって異なります。
クラスターのセットアップに取り組んでいる場合、truncateはクラスターのすべてのノードが起動しているときにのみ使用できます。
Truncateを使用することにより、データを見逃します(データの重要性が不明です)
したがって、データを削除する非常に安全な方法は、COPYコマンドを使用することです。
1)copy cassandra cmdを使用してデータをバックアップするcopy tablename to 'path'
2)linux cp cmdを使用してファイルを複製します
cp 'src path' 'dst path'
3)dstパスの重複ファイルを編集し、最初の行を期待するすべての行を削除します。
ファイルを保存します。
4)copy cassandra cmdを使用してインポートするcopy tablename from 'dst path'