2017-02-17 8 views
2

私はCassandraにたくさんのデータを挿入しました。今私は無作為に1つのレコードを照会したいと思います。 しかし、私はprimary keyを知らない。ですから、私はCassandraでall dataの主キーをフェッチする方法が必要です。次に、ランダムな主キーを使用してデータを照会することができます。Cassandraのすべてのレコードの主キーを取得するにはどうすればよいですか?

カッサンドラのdataディレクトリから入手できますか?私はそのディレクトリ内の.dbファイルしか見つけられませんでした。

+0

をそのような機能はありません...あなたは 'COPY table_nameのを試すことができますすることがあります(column_name)TO file_name.csv' –

+0

いくつかのツールを使って 'data'ディレクトリから主キーを取得できますか? – niaomingjian

+0

このCOPYコマンドはDevCenterとcqlshで動作します...データディレクトリにはデータの一部のみが含まれます(異なるノードに分散されたデータ) –

答えて

3

どのバージョンのCassandraをお使いですか?あなたはカサンドラ3にしている場合は、このようなPRIMARY KEY部品用のコマンドラインから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 

これらの結果をkeyspaceとtableでフィルタリングする場合は、WHERE句で指定できます。

+0

主キーのスキーマ私が得たいのは、主キーの価値です。 – niaomingjian

0

SELECT * FROM xxx;クエリを回避するには、TOKEN関数を使用する必要があります。 This external postはすべてのデータセットをトラバースする方法を説明していますが、ごくわずかな労力でユースケースに採用することができます。

1

あなたはCQLで明確な使用できる主キーの値を取得するには、次の

cqlsh> select distinct pkey_column FROM table; 

、または複数持つ:

cqlsh> select distinct pkey_column_1, pkey_column_2 FROM table; 
関連する問題