카산드라의 핵심 공간의 모든 테이블 목록을 얻는 방법
문제
저는 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();
.
keyspace의 이름을 바인딩하는 List<String>
를 만들고 준비된 진술을 사용합니다 (keyspace).내 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';
-
열 패밀리 이름 , 즉 테이블 이름 :
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);
}
. 제휴하지 않습니다 StackOverflow