Могу ли я написать программу, чтобы увидеть, существует ли таблица в API YCQL (Cassandra) YugaByte? - PullRequest
0 голосов
/ 14 марта 2019

Есть ли программный способ проверить, существует ли таблица в API YCQL (Cassandra) YugaByte?

Например, в Postgres можно сделать что-то вроде:

Как проверить, существует ли таблица в данной схеме

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

Есть ли эквивалент в YCQL? "

Ответы [ 2 ]

2 голосов
/ 14 марта 2019

Как SELECT COUNT(*) FROM system_schema.tables WHERE keyspace_name = 'yourkeyspace' AND table_name = 'yourtable';?работает по крайней мере для Кассандры.Подсчет не требуется, вы можете просто увидеть, есть ли в наборе результатов что-нибудь.Если вы делаете это, чтобы увидеть, нужно ли вам создавать таблицу, вы можете просто запустить оператор create с предложением IF NOT EXISTS, и он будет noop, если он уже существует.

1 голос
/ 15 марта 2019

Да, вы можете сделать то же самое для YCQL БД YugaByte.Вот пример, который показывает, как проверить наличие пространства ключей и таблицы в 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)
...