0

是否有一种编程方式来检查 YugaByte 的 YCQL (Cassandra) api 中是否存在表?

例如,在 Postgres 中,可以执行以下操作:

如何检查给定模式中是否存在表

SELECT EXISTS (
   SELECT 1
   FROM   information_schema.tables 
   WHERE  table_schema = 'schema_name'
   AND    table_name = 'table_name'
   );

YCQL 中是否有等价物?”

4

2 回答 2

3

喜欢SELECT COUNT(*) FROM system_schema.tables WHERE keyspace_name = 'yourkeyspace' AND table_name = 'yourtable';?至少对 Cassandra 有效。不需要计数,您可以查看结果集是否有任何内容。如果您这样做是为了查看是否应该创建表,您可以只运行带有IF NOT EXISTS子句的 create 语句,如果它已经存在,它将是一个 noop。

于 2019-03-14T16:55:13.163 回答
2

是的,你可以对 YugaByte DB 的 YCQL 做同样的事情。这是一个示例,展示了如何通过 cqlsh 检查键空间和表的存在。

设置:

cqlsh> CREATE KEYSPACE IF NOT EXISTS ksp;

cqlsh> CREATE TABLE IF NOT EXISTS ksp.t(k int PRIMARY KEY, v int);

检查键空间是否存在

cqlsh> select count(*) from system_schema.keyspaces 
       where keyspace_name = 'ksp';


 count
-------
     1

(1 rows)
cqlsh> select count(*) from system_schema.keyspaces 
       where keyspace_name = 'non-existent-ksp';

 count
-------
     0

(1 rows)

检查表是否存在

cqlsh> select count(*) from system_schema.tables 
       where keyspace_name = 'ksp' and table_name = 't';

 count
-------
     1

(1 rows)
cqlsh> select count(*) from system_schema.tables 
        where keyspace_name = 'ksp' and table_name = 'non-existent-t';

 count
-------
     0

(1 rows)
于 2019-03-15T05:31:17.667 回答