私は、cassandraの特定の列ファミリからすべての行を削除する方法を探しています。Cassandraカラムファミリのすべてのデータを削除するにはどうすればよいですか?
これは、SQLのTRUNCATE TABLE
に相当します。
私は、cassandraの特定の列ファミリからすべての行を削除する方法を探しています。Cassandraカラムファミリのすべてのデータを削除するにはどうすればよいですか?
これは、SQLのTRUNCATE TABLE
に相当します。
スチフトコールtruncate
またはCQLでTRUNCATE <table>
コマンドを使用できます。
アステュアナクスでその非常にシンプル。 1行だけの声明
/* keyspace variable is Keyspace Type */
keyspace.truncateColumnFamily(ColumnFamilyName);
あなたはヘクターを使用している場合、それは同様に簡単です:
cluster.truncate("our keyspace name here", "your column family name here");
あなたはまた、カサンドラ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;
あなたがcqlshを使用している場合は、いずれかの2つの方法
use keyspace
でそれを行うことができます。お使いのバージョンに応じて、 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 - あなたはDataStax Javaドライバを使用したい場合は、その後truncate column_family;
truncate keyspace.column_family;
、あなたが見ることができます。
クラスタセットアップで作業している場合、クラスタのすべてのノードがアップしている場合にのみtruncateを使用できます。我々はデータを欠場する、切り捨て使用することにより
(私たちは、データの重要性と確認されていません)
ので、非常に安全な方法だけでなく、データを削除するにはトリックがCOPYコマンドを使用することで、
1)バックアップデータ用いたコピーカサンドラCMD
copy tablename to 'path'
2)LinuxのCP cmdを使用してファイルを複製
CP 'のsrcパス' 'DSTパス'
3)dstパスに重複したファイルを編集し、すべての行を削除します。
ファイルを保存します。
4)は、そのための
copy tablename from 'dst path'
感謝をインポートするには、copyカサンドラcmdを使用しています。私は 'drop column family'を代わりに使用し、列ファミリを再作成しましたが、どの構文が存在するかを知ることは良いことです。 –
これを追加するだけで、列ファミリを削除しても実際にディスク上のデータは削除されません。あなたはテーブルを手動でrmする必要があります。したがって、私は作成された日付、すなわちusers_2013_09_29などを示すことで、一意の名前を持つ新しい列ファミリを常に作成することが有用であることを発見しました。 –
'truncate'の唯一の欠点は、クラスタのすべてのノードが起動しなければならないことです。そうでない場合は、 'drop columnfamily'を使って再度作成してください。 – Tom