web-dev-qa-db-ja.com

すべてのcassandra=テーブルをリストする方法

cassandraデータベースには多くのテーブルがあり、user_idというタイトルの列が含まれています。user_idの値は、テーブルusersに格納されているユーザーを参照します。 user_idというタイトルの列を含むテーブル。

テーブルのリストを明示的に定義することを避けるために、CassandraSQLContextまたはその他の組み込みメソッドまたはカスタムプロシージャを使用してすべてのテーブルをリストする方法はありますか?

ありがとうございました。

16
Niko Gamulin

保存されたキースペース、テーブル、列に関する情報を提供できるシステムテーブルがあります。

Cqlshコンソールで次のコマンドを実行してみてください。

  1. キースペース情報を取得する

    SELECT * FROM system.schema_keyspaces ;

  2. テーブル情報を取得する

    SELECT columnfamily_name FROM system.schema_columnfamilies WHERE keyspace_name = 'keyspace name';

  3. テーブル情報を取得する

    SELECT column_name, type, validator FROM system.schema_columns WHERE keyspace_name = 'keyspace name' AND columnfamily_name = 'table name';

Sinse v 5.0.x ドキュメント

  1. キースペース情報を取得する

    SELECT * FROM system.schema_keyspaces;

  2. テーブル情報を取得する

    SELECT * FROM system_schema.tables WHERE keyspace_name = 'keyspace name';

  3. テーブル情報を取得する

    SELECT * FROM system_schema.columns WHERE keyspace_name = 'keyspace_name' AND table_name = 'table_name';

Sinse v 6.0 ドキュメント

  1. キースペース情報を取得する

    SELECT * FROM system_schema.keyspaces

  2. テーブル情報を取得する

    SELECT * FROM system_schema.tables WHERE keyspace_name = 'keyspace name';

  3. テーブル情報を取得する

    SELECT * FROM system_schema.columns WHERE keyspace_name = 'keyspace_name' AND table_name = 'table_name';

23
Sabik

cqlshからdescribe tables;を実行

41
Dan Borza

Datastaxコアドライバーとクラスターメタデータを使用して、目的を達成できます。キースペース内のすべてのテーブルと各テーブルの列をリストする例を次に示します。

 Cluster cluster= Cluster.builder().addContactPoint(clusterIp).build();
    Metadata metadata =cluster.getMetadata();

   Collection<TableMetadata> tablesMetadata= metadata.getKeyspace("mykeyspacename").getTables();
    for(TableMetadata tm:tablesMetadata){
        System.out.println("Table name:"+tm.getName());
        Collection<ColumnMetadata> columnsMetadata=tm.getColumns();            
        for(ColumnMetadata cm:columnsMetadata){
            String columnName=cm.getName();
            System.out.println("Column name:"+columnName);
        }
    }
5
zoran jeremic

DSEの場合。後でリリースする場合は、system_schemaキースペースを確認してください。から

cqlsh > desc keyspaces;

spark_system  system_schema  "OpsCenter"  cfs_archive         "HiveMetaStore"
system_auth    cfs          demobeta            dsefs          
dse_security  hypermedia     dse_leases   system_traces       dse_perf       
solr_admin    system         system_distributed  dse_system

「system_schema」が表示される場合、テーブルのメタデータはこのキースペースにあります。

cqlsh>use system_schema;

cqlsh>select keyspace_name,table_name from tables where keyspace_name = 'system';
2
mipsbuster