カサンドラのキースペースのすべてのテーブルのリストを取得する方法

StackOverflow https://stackoverflow.com//questions/25061591

質問

私はCassandraに慣れています、私は現在ダミーアプリケーションでcassandracsharpdriverを使用しています。指定されたキースペースで説明されているすべてのテーブルのリストを取得したいです。

        Cluster cluster = Cluster.Builder().AddContactPoints("IPAddress").Build();
        Session session = cluster.Connect("MyKeySpace");
.

このコードでは、MyKeySpace

のすべてのテーブルのリストを取得したいです。

役に立ちましたか?

解決

Datastax Cassandra C#ドライバのテーブルのリストをどのように準備するかを実行します:

クラスタに接続します。

Cluster cluster = Cluster.Builder().AddContactPoints("IPAddress").Build();
Session session = cluster.Connect();
.

List<String>を作成し、鍵スペースの名前をバインドするための準備済みステートメントを使用します。My CQLステートメントはcolumnfamily_nameの選択だけです。

List<String> tableList = new List<String>();

String strCQL = "SELECT columnfamily_name "
    + "FROM system.schema_columnfamilies WHERE keyspace_name=? ";
PreparedStatement pStatement = _session.Prepare(strCQL);
BoundStatement boundStatement = new BoundStatement(pStatement);
boundStatement.Bind("MyKeySpace");
.

今度は、結果を実行し、結果を繰り返し、上記のリストに各テーブル名を追加します。

RowSet results = session.Execute(boundStatement);

foreach (Row result in results.GetRows())
{
    tableName = result.GetValue<String>("columnfamily_name");
    tableList.Add(tableName);
}
.

今すぐあなたのUIに追加できるテーブルのリストがあるはずです。

他のヒント

実行できます。

select * from system.schema_columnfamilies where keyspace_name='MyKeySpace';
.

「システム」キースペースに対して実行されます。

  1. 列名

    SELECT column_name FROM system.schema_columns WHERE keyspace_name = 'KeySpaceName' AND columnfamily_name = 'TableName';
    
  2. 列の姓、すなわちテーブル名:

    select columnfamily_name from system.schema_columnfamilies where keyspace_name='KeySpaceName';
    

SO

のようなキースペースの文字列リストを取得するために、クラスタメタデータを使用するオプションがあります。
var cluster = Cluster.Builder().AddContactPoints("IPAddress").Build();
var keyspaces = cluster.Metadata.GetKeyspaces();
foreach (var keyspaceName in keyspaces)
{
   Console.WriteLine(keyspaceName);
}
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top