2012-05-09 36 views

Trả lời

78

Bạn có thể sử dụng cuộc gọi tiết kiệm truncate hoặc lệnh TRUNCATE <table> trong CQL.

http://www.datastax.com/docs/1.0/references/cql/TRUNCATE

+1

Cảm ơn vì điều đó. Tôi đã kết thúc bằng cách sử dụng 'drop column family' để thay thế và tạo lại họ nhóm, nhưng thật tốt khi biết cú pháp tồn tại. –

+1

Chỉ cần thêm vào điều này, thả các gia đình cột không thực sự xóa dữ liệu trên đĩa. Bạn phải tự rm các bảng. Vì vậy, tôi thấy hữu ích khi luôn tạo các họ cột mới có tên duy nhất bằng cách chỉ ra ngày chúng được tạo, tức là người dùng_2013_09_29, v.v. –

+2

Nhược điểm duy nhất của 'truncate' là tất cả các nút trong cụm của bạn phải được dựng lên.Nếu không phải như vậy, bạn có thể sử dụng 'drop columnfamily' và sau đó tạo lại nó. – Tom

6

Nó rất đơn giản trong Astyanax. Chỉ cần một dòng tuyên bố Độc

/* keyspace variable is Keyspace Type */ 
keyspace.truncateColumnFamily(ColumnFamilyName); 
3

Nếu bạn đang sử dụng Hector nó rất dễ dàng cũng như:

cluster.truncate("our keyspace name here", "your column family name here"); 
9

Bạn cũng có thể làm được điều này thông qua 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; 
3

Nếu bạn đang sử dụng cqlsh, sau đó bạn có thể làm điều đó trong 2 cách

  1. use keyspace; và sau đó truncate column_family;
  2. truncate keyspace.column_family;

Nếu bạn muốn sử dụng tài xế DataStax Java, bạn có thể nhìn vào - http://www.datastax.com/drivers/java/1.0/com/datastax/driver/core/querybuilder/QueryBuilder.html hoặc http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/querybuilder/Truncate.html

tùy thuộc vào phiên bản của bạn.

0

nếu bạn đang làm việc trên thiết lập cụm, truncate chỉ có thể được sử dụng khi tất cả các nút của cụm là LÊN.

Bằng cách sử dụng cắt ngắn, chúng ta sẽ bỏ lỡ các dữ liệu (chúng tôi không chắc chắn với tầm quan trọng của dữ liệu)

Vì vậy, cách rất an toàn cũng một thủ thuật để xóa dữ liệu là sử dụng lệnh COPY,

1) sao lưu dữ liệu bằng cassandra copy cmd
copy tablename to 'path'

2) lặp lại trong các tập tin sử dụng linux cmd cp
cp 'con đường src' 'con đường dst'

3) chỉnh sửa tập tin trùng lặp trong đường dẫn dst, xóa tất cả các dòng mong đợi dòng đầu tiên.
lưu tệp.

4) sử dụng bản sao cmd cassandra nhập
copy tablename from 'dst path'

Các vấn đề liên quan