Question

Je suis nouveau à cassandra, je suis actuellement en utilisant CassandraCSharpDriver dans une application fictive.Je veux obtenir la liste de toutes les tables d'un utilisateur l'a décrit dans un espace des clés.

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

Dans ce code je veux obtenir la liste de toutes les tables de MyKeySpace

Était-ce utile?

La solution

Je vais courir à travers la façon dont je voudrais préparer à la liste des tableaux avec les DataStax Cassandra C# pilote:

Se connecter à votre cluster:

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

Je vais créer un List<String> et l'utilisation d'une requête préparée (parce que c'est juste une bonne idée) pour lier le nom de votre espace.Mon instruction CQL est de ne sélectionner columnfamily_name, qui devrait être ce dont vous avez besoin.

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");

Maintenant, je vais exécuter l'instruction, itérer sur les résultats et d'ajouter chaque nom de table à la Liste, j'ai créé ci-dessus.

RowSet results = session.Execute(boundStatement);

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

Maintenant, vous devriez avoir une liste de tables que vous pouvez ajouter à votre INTERFACE utilisateur.

Autres conseils

Vous pouvez exécuter:

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

Il fonctionne contre le Keyspace "Système".

  1. Obtenez noms de colonne :

    SELECT column_name FROM system.schema_columns WHERE keyspace_name = 'KeySpaceName' AND columnfamily_name = 'TableName';
    
  2. Obtenez Noms de famille de colonnes , c'est-à-dire des noms de table:

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

Il y a la possibilité d'utiliser des métadonnées de cluster aussi pour obtenir une liste de clés de chaîne comme si

var cluster = Cluster.Builder().AddContactPoints("IPAddress").Build();
var keyspaces = cluster.Metadata.GetKeyspaces();
foreach (var keyspaceName in keyspaces)
{
   Console.WriteLine(keyspaceName);
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top