如何在Cassandra中以编程方式知道表的主键

s3fp2yjn  于 2022-11-23  发布在  Cassandra
关注(0)|答案(3)|浏览(162)

我使用Datastax driver来访问cassandra。我的方法接受一个cql string paramater。因为cql是任意的,所以我不知道cql字符串中表的primary keys
在结果集中,我没有找到与primary keys关联的metadata。我只能获得all columnsnamesvalues
我想知道哪些列是主键。如何在cql中programmatically得到表的主键?

public Map<String, Object> search(String cql) {

    SimpleStatement statement = new SimpleStatement(cql);
    ResultSet result = session.execute(statement);
    // ...
}
jfewjypa

jfewjypa1#

您可以使用TableMetadata.getPrimaryKey()方法

下面是一个示例演示,用于获取键空间“test”和表ashraful_test的主键

try (Cluster cluster = Cluster.builder().addContactPoints("127.0.0.1").withCredentials("cassandra", "cassandra").build(); Session session = cluster.connect("test")) {
    System.out.println(cluster.getMetadata().getKeyspace(session.getLoggedKeyspace()).getTable("ashraful_test").getPrimaryKey());
}
kr98yfug

kr98yfug2#

我不知道任何驱动程序的东西,但如果一切都失败了,你可以做以下:

cqlsh> select column_name, kind from system_schema.columns where keyspace_name ='test' and table_name = 'authorization';

 column_name             | kind
-------------------------+---------------
 authorization_reference |       regular
            order_number | partition_key
              partner_id |    clustering
        sales_channel_id |    clustering
7y4bm7vi

7y4bm7vi3#

在此基础上,提出了一种新的基于数据库的数据挖掘方法。
我的关键字空间(“我的关键字空间”).get(). get表(“我的表”).get(). get主键()

相关问题