如何使用Astyanax执行"'describe"CQL查询

eLR*_*uLL 2 java cql cassandra astyanax cql3

当您使用cqlshCassandra时,您可以进行describe查询以获取表的信息,例如:

DESCRIBE TABLE emp;
Run Code Online (Sandbox Code Playgroud)

它会给你一些类似的东西:

CREATE TABLE emp (
  empid int PRIMARY KEY,
  deptid int,
  description text
) ...
....
Run Code Online (Sandbox Code Playgroud)

那么如何使用Astyanax对CQL的支持来查询它.我能够使用以下方法查询简单SELECT语句:

OperationResult<CqlResult<String, String>> result
            = keyspace.prepareQuery(empColumnFamily)
              .withCql("Select * from emp;")
              .execute();
Run Code Online (Sandbox Code Playgroud)

但这不适用于DESCRIBE陈述.

PD:我真的这样做是为了得到DATA TYPES表格,稍后解析它并获得例如int, int, text,所以如果你有不同的方法来获得它们,那么它可能很棒.

此查询select column, validator from system.schema_columns;不起作用,因为它不返回组合键.

Ale*_*scu 5

DESCRIBE不是CQL规范的一部分(既不是CQL2也不是CQL3).如果你想完全重建,DESCRIBE你可以看看cqlsh实现(寻找print_recreate_columnfamily).

您还可以从system.schema_columnfamilies以下网站获取更多元信息:

select keyspace_name, columnfamily_name, key_validator from schema_columnfamilies;