Pregunta

Soy nuevo en cassandra, actualmente estoy usando CassandraCSharpDriver en una aplicación de prueba.Quiero obtener la lista de todas las tablas de un usuario se ha descrito en un determinado espacio de claves.

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

En este código se desea obtener la lista de todas las tablas de MyKeySpace

¿Fue útil?

Solución

Voy a correr a través de cómo iba a preparar la lista de tablas con el DataStax Cassandra C# controlador:

Conectarse al clúster:

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

Voy a crear una List<String> y el uso de una instrucción preparada (porque eso es sólo una buena idea) para enlazar el nombre de su keyspace.Mi CQL declaración es sólo la selección de columnfamily_name, que debería ser lo que usted necesita.

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

Ahora voy a ejecutar la instrucción, iterar a través de los resultados, y añadir a cada nombre de la tabla a la Lista que he creado anteriormente.

RowSet results = session.Execute(boundStatement);

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

Ahora usted debe tener una lista de las tablas que usted puede agregar a su interfaz de usuario.

Otros consejos

Puede ejecutar:

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

se ejecuta contra el espacio de acceso "Sistema".

  1. Consigue nombres de columnas :

    SELECT column_name FROM system.schema_columns WHERE keyspace_name = 'KeySpaceName' AND columnfamily_name = 'TableName';
    
  2. Consigue nombres de familia de columnas , es decir, nombres de tablas:

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

Hay la opción de usar metadatos de clúster, así como para obtener una lista de cadenas de teclas de teclas como SO

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top