我可以编写一个程序来查看yugabyte的YQL(cassandra)api中是否存在一个表吗?

j8yoct9x  于 2021-06-10  发布在  Cassandra
关注(0)|答案(2)|浏览(436)

有没有一种编程的方法来检查yugabyte的YQL(cassandra)api中是否存在表?
例如,在postgres中,可以执行以下操作:
如何检查给定模式中是否存在表

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

在ycql中是否有一个等价物?”

efzxgjgh

efzxgjgh1#

就像 SELECT COUNT(*) FROM system_schema.tables WHERE keyspace_name = 'yourkeyspace' AND table_name = 'yourtable'; ? 至少对Cassandra有用。计数是没有必要的,你可以看看结果集是否有什么。如果您这样做是为了查看是否应该创建表,那么只需使用 IF NOT EXISTS 如果它已经存在的话,它将是一个noop。

cnh2zyt3

cnh2zyt32#

是的,您也可以对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)

相关问题