Как получить список всех таблиц ключевого пространства в Кассандре

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

Вопрос

Я новичок в Кассандре, в настоящее время я использую 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> и использую подготовленную оператор (потому что это просто хорошая идея), чтобы связать имя вашего клавиатуры.Мой оператор 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. Получить <Сильные> Колонны Семейные имена , i.e., Назначения таблицы:

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

Есть возможность использовать метаданные кластеры, а также получить строку списка клавишных площадей, как так

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