Нет никакой реальной альтернативы при вводе исключения "JSON" в cqlsh. Не удалось вставить JSON в таблицу Cassandra

70
6

Я пытаюсь вставить JSON в таблицу Cassandra, используя оболочку и код Java, но получая эту ошибку: нет жизнеспособной альтернативы на входе JSON

Версии Кассандры: [cqlsh 4.1.1 | Cassandra 2.0.12 | CQL spec 3.1.1 | Транзитный протокол 19.39.0] Сценарий создания таблицы CREATE TABLE пользователи (id int PRIMARY KEY, age int, текст состояния); Вставить скрипт INSERT INTO users JSON '{"id": 888, "age": 42, "state": "TX"}'; Аналогичный код для вставки с использованием Java: String cqlStatement = "INSERT INTO users JSON '{\" id\": 888, \" age\": 21, \" state\": \" TX\"}'"; cassandraTemplate.execute(cqlStatement);

Получение исключения в обоих случаях: Отсутствие жизнеспособной альтернативы на входе "JSON" 5. Нужно ли мне что-то настраивать в Cassandra для принятия команды JSON в терминале?

спросил(а) 2016-07-25T13:25:00+03:00 3 года, 4 месяца назад
2
Решение
84

Не возможно с вашей версией 2.0.12. Похоже, Cassandra 2.2 - это минимальная версия, которая поддерживает "INSERT INTO users JSON...".

При значении <2.2 альтернативы фиксируются здесь:

вставить строку JSON в Apache-Cassandra 0.8.2

ответил(а) 2016-12-28T08:01:00+03:00 2 года, 11 месяцев назад
Еще 1 ответ
-3

Найден ответ на вопрос, который работает в Cassandra 2.0.12, а также

Предпосылки:

Миниатюрная версия JSON для вставки в таблицу Ссылка http://www.httputility.net/json-minifier.aspx может использоваться для минимизации JSON (зайдите на этот сайт и скопируйте JSON
содержимое, минимизировать и копировать результат) Проверьте любую одинарную цитату ('), замените ее двойной кавычкой (' ') Убедитесь, что строка не заканчивается JSon следует вставить в текстовый столбец

В данном примере была создана таблица с именем employee, которая имеет 4 столбца. Eid целочисленное значение, ename текстовое значение, ephonenumber как список текста и eaddress как текст. eaddress - это столбец, в который должен быть вставлен JSON

Шаги для выполнения:

Создать таблицу позволяет сказать, что сотрудник имеет 4 столбца eid, ename, ephonenumber, eaddress с первичным ключом eid

Команда для выполнения в терминале CQL:

create table employee (eid int, ename text, ephonenumber list, eaddress text, primary key (eid));

Вставьте строку в таблицу сотрудников с ephonenumber как список и eaddress как json

Команда для выполнения на CQL-терминале

(1, 'Sourav', ['7773330000', '5550003333'], '{"office": "197 - ITPL - Bangalore", "home": "196 -Thubarahalli - Бангалор "} ');

Проверьте с помощью select query, если строка JSON была вставлена

Выберите * у сотрудника

ответил(а) 2016-10-10T14:01:00+03:00 3 года, 1 месяц назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема