문제

저는 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';
.

"시스템"키패스에 대해 실행됩니다.

  1. 가져 오기 열 이름 :

    SELECT column_name FROM system.schema_columns WHERE keyspace_name = 'KeySpaceName' AND columnfamily_name = 'TableName';
    
  2. 열 패밀리 이름 , 즉 테이블 이름 :

    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