Получить тип столбца таблицы с помощью команды cql - PullRequest
1 голос
/ 19 июня 2019

Я пытаюсь получить тип столбца таблицы с помощью команды cql.Моя таблица:

CREATE TABLE users (
    id uuid,
    name text);

Сейчас я пытаюсь получить тип столбца name.С помощью некоторого запроса на выборку я хочу получить text в качестве вывода.

Мой пример использования: я пытаюсь drop name column only if type of name is text

Какой скрипт мне следует попробовать?

1 Ответ

1 голос
/ 19 июня 2019

Из CQL вы можете читать эти данные из системных таблиц.В Cassandra 3.x эта информация находится в таблице system_schema.columns, которая имеет следующую схему:

CREATE TABLE system_schema.columns (
    keyspace_name text,
    table_name text,
    column_name text,
    clustering_order text,
    column_name_bytes blob,
    kind text,
    position int,
    type text,
    PRIMARY KEY (keyspace_name, table_name, column_name)
) WITH CLUSTERING ORDER BY (table_name ASC, column_name ASC);

, поэтому вы можете использовать запрос, подобный этому, для извлечения данных:

select type from system_schema.columns where keyspace_name = 'your_ks' 
and table_name = 'users' and column_name = 'name';

В Cassandra 2.x структура системных таблиц отличается, поэтому вам может потребоваться адаптировать ваш запрос.

Если вы обращаетесь к кластеру программно, то драйвер скрывает различия между версиями Cassandra, и выможет использовать что-то вроде класса метаданных из драйвера Java , чтобы получить информацию о структуре таблицы и типах столбцов.Но если вы делаете программные изменения схемы, вы должны быть осторожными и явно ждать соглашения схемы , как в в следующем примере .

...