2013-04-17 39 views

Trả lời

8

Bạn có thể sử dụng system keyspace để làm điều này:

SELECT column_name FROM system.schema_columnfamilies 
    WHERE keyspace_name = 'testks' AND columnfamily_name = 'testcf'; 

Output trong cqlsh (sử dụng cql3):

column_name 
------------- 
    password 

Bạn có thể tìm ra chìa khóa cho cột bằng cách sử dụng:

SELECT key_aliases FROM system.schema_columnfamilies WHERE keyspace_name='testks' 
AND columnfamily_name='testcf'; 

Output:

key_aliases 
-------------- 
["username"] 
+0

Cảm ơn rất nhiều, đó là thực sự hữu ích! – user2090879

+0

@Lyuben Tôi có thể thực hiện phạm vi trên các tên cột tương tự với Slice của cột không? Ví dụ: Lấy tên cột giữa hai ngày nếu ngày là tên cột – Peter

9

Nếu bạn muốn nhận được tên cột của một bảng cụ thể với CQL3 sau đó tôi đoán thử này

select * from system.schema_columns WHERE keyspace_name='#KS' AND columnfamily_name='#CF' allow filtering;

Lưu ý: keyspace_name trong mệnh đề where là không bắt buộc . Được sử dụng chủ yếu cho mục đích lọc tốt hơn (ví dụ, bảng có cùng tên trong nhiều không gian phím)

+0

Cảm ơn bạn rất nhiều! Trên thực tế tôi không biết câu trả lời phù thủy để xác nhận cả hai là chính xác và hữu ích, cảm ơn một lần nữa;) – user2090879

+0

Thực tế điều này làm việc cho Cassandra 2, CQL3 nhưng không phải ở trên, để có được tất cả các tên cột ... –

+0

Thay đổi * thành column_name và bạn ' sẽ lấy tên của tất cả các cột trong nhóm –

3

Từ thử nghiệm mới nhất của mình, chúng ta nên sử dụng schema_columns, chứ không phải schema_columnfamilies để lấy tất cả các tên cột. schema_columnfamilies có thể được sử dụng để lấy tên bảng. tên cột

  1. Nhận:

    SELECT column_name FROM system.schema_columns WHERE keyspace_name = 'KeySpaceName' AND columnfamily_name = 'TableName'; 
    
  2. Nhận tên gia đình cột, ví dụ: tên bảng:

    select columnfamily_name from system.schema_columnfamilies where keyspace_name='KeySpaceName'; 
    
Các vấn đề liên quan