2017-02-17 19 views
2

Я вложил много данных в Кассандру. Теперь я хотел бы случайно запросить одну запись. Но я не знаю primary key. Поэтому я хочу, чтобы получить первичные ключи all data в Кассандре, тогда я могу использовать один случайный первичный ключ для запроса данных.Как я могу получить первичные ключи всех записей в Кассандре?

Могу ли я получить его из каталога data Кассандры? Я нашел только файлы .db в этом каталоге.

+0

Там нет такой функциональности ... Может быть, вы можете попробовать 'COPY table_name (column_name) TO file_name.csv' –

+0

Могу ли я получить первичные ключи из каталога 'data', используя некоторые инструменты? – niaomingjian

+0

эта команда COPY будет работать в DevCenter, а также cqlsh ... Каталог данных будет содержать только часть данных (данные, распространяемые на разных узлах) –

ответ

3

Какая версия Кассандры вы? Если вы на Кассандре 3, вы можете запросить system_schema.columns из командной строки, и Grep для первичного ключа частей, как это:

$ bin/cqlsh -u aploetz -p pass 
    -e'SELECT keyspace_name,table_name,column_name,kind 
     FROM system_schema.columns' | grep _key 
       test |       fail |       id | partition_key 
     stackoverflow |     hourly_average |    application_id | partition_key 
     stackoverflow |       meters |     device_id | partition_key 
     stackoverflow |       meters |     parking_id | partition_key 
     stackoverflow |      meters2 |     device_id | partition_key 
     stackoverflow |      meters2 |     parking_id | partition_key 

Затем, чтобы получить ключи кластеризации, вы могли бы изменить, что немного:

$ bin/cqlsh -u aploetz -p pass 
    -e'SELECT keyspace_name,table_name,column_name,kind 
     FROM system_schema.columns' | grep clustering 
     stackoverflow |     hourly_average |     device_id | clustering 
     stackoverflow |     hourly_average |     location_id | clustering 
     stackoverflow |     hourly_average |     partner_id | clustering 
     stackoverflow |       meters |      date | clustering 
     stackoverflow |       meters |      status | clustering 
     stackoverflow |      meters2 |      date | clustering 
     stackoverflow |      meters2 |      status | clustering 

Обратите внимание, что если вы хотите отфильтровать эти результаты с помощью пространства ключей и таблицы, вы можете указать их в предложении WHERE.

+0

Я не хочу схема первичных ключей. Я хочу получить значение первичных ключей. – niaomingjian

0

Чтобы избежать несвязанных запросов , вам необходимо использовать функцию TOKEN. This external post объясняет, как пройти весь ваш набор данных, но вы можете принять его в свой прецедент с очень небольшими усилиями.

1

Для получения значений первичных ключей, которые можно использовать в отличие CQL:

cqlsh> select distinct pkey_column FROM table; 

Или с несколькими:

cqlsh> select distinct pkey_column_1, pkey_column_2 FROM table; 

 Смежные вопросы

  • Нет связанных вопросов^_^