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

时间:2017-04-12 08:11:12

标签: java cassandra datastax-java-driver

我正在使用Datastax driver访问cassandra。我的方法需要cql string paramater。 因为cql是任意的,所以我不知道cql字符串中表的primary keys

在ResultSet中,我没有找到与metadata关联的primary keys。 我只能获得names的{​​{1}}和values

我想知道哪些列是主键。 如何all columns在cql中获取表的主键?

programmatically

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您可以使用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());
}