我正在使用Datastax driver
访问cassandra
。我的方法需要cql string paramater
。
因为cql是任意的,所以我不知道cql字符串中表的primary keys
。
在ResultSet中,我没有找到与metadata
关联的primary keys
。
我只能获得names
的{{1}}和values
。
我想知道哪些列是主键。
如何all columns
在cql中获取表的主键?
programmatically
答案 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());
}