Как получить список всех таблиц ключевого пространства в Кассандре
Вопрос
Я новичок в Кассандре, в настоящее время я использую 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';
.
Он работает против кнопки «Система».
-
Получить <сильные> имена столбцов :
SELECT column_name FROM system.schema_columns WHERE keyspace_name = 'KeySpaceName' AND columnfamily_name = 'TableName';
-
Получить <Сильные> Колонны Семейные имена , 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);
}
.