cassandraデータベースには多くのテーブルがあり、user_idというタイトルの列が含まれています。user_idの値は、テーブルusersに格納されているユーザーを参照します。 user_idというタイトルの列を含むテーブル。
テーブルのリストを明示的に定義することを避けるために、CassandraSQLContextまたはその他の組み込みメソッドまたはカスタムプロシージャを使用してすべてのテーブルをリストする方法はありますか?
ありがとうございました。
保存されたキースペース、テーブル、列に関する情報を提供できるシステムテーブルがあります。
Cqlshコンソールで次のコマンドを実行してみてください。
キースペース情報を取得する
SELECT * FROM system.schema_keyspaces ;
テーブル情報を取得する
SELECT columnfamily_name FROM system.schema_columnfamilies WHERE keyspace_name = 'keyspace name';
テーブル情報を取得する
SELECT column_name, type, validator FROM system.schema_columns WHERE keyspace_name = 'keyspace name' AND columnfamily_name = 'table name';
Sinse v 5.0.x ドキュメント
キースペース情報を取得する
SELECT * FROM system.schema_keyspaces;
テーブル情報を取得する
SELECT * FROM system_schema.tables WHERE keyspace_name = 'keyspace name';
テーブル情報を取得する
SELECT * FROM system_schema.columns WHERE keyspace_name = 'keyspace_name' AND table_name = 'table_name';
Sinse v 6.0 ドキュメント
キースペース情報を取得する
SELECT * FROM system_schema.keyspaces
テーブル情報を取得する
SELECT * FROM system_schema.tables WHERE keyspace_name = 'keyspace name';
テーブル情報を取得する
SELECT * FROM system_schema.columns WHERE keyspace_name = 'keyspace_name' AND table_name = 'table_name';
cqlsh
からdescribe tables;
を実行
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);
}
}
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';