Проблема с вставкой данных в cassandra

#cassandra

#кассандра

Вопрос:

введите описание изображения здесь, это структура данных таблицы.

 reviewer_id,reviewer_username,reviewer_personal_details,reviewer_preferences
  
 1,RhMadsen,"{fname: 'Rhea', lanme: 'Madsen', age: 23}","{genre: {id: 14, name: 'Fantasy'}, production_company: {'name': 'Universal Pictures', 'id': 33}, production_country: {'iso_3166_1': 'US', 'name': 'United States of America'}}"
  

и мой insert cmd выглядит так

 INSERT INTO reviewers(
"reviewer_id",
"reviewer_username",
"reviewer_personal_details",
"reviewer_preferences"
) 
VALUES (
'30',
'Reilio',

{fname:'Jack',lname:'O'Reilly',age:'19'},
{"genres":{"id":'28',"name":'Action'},"production_company":{"id":'3333',"name":'Kangaroo Pictures'},"production_country":{"iso_3166_1":'AU',"name":'Australia'}}
);
  

и оболочка всегда говорит, что она должна заканчиваться на;, но у меня есть ;. всегда начинайте новую строку. понятия не имею, что произошло.

Комментарии:

1. показать структуру таблицы и структуру UDT

2. да, таблица и тип приведены ниже: CREATE TYPE personal_details ( fname text, lname text, age int ); CREATE TABLE reviewers ( reviewer_id int, reviewer_username text, reviewer_personal_details personal_details, reviewer_preferences map<text, frozen<map<text, text>>>, PRIMARY KEY(reviewer_id), );

Ответ №1:

У вас есть несколько проблем в вашем заявлении:

  1. у вас есть символ одинарной кавычки внутри этой строки: lname:'O'Reilly' — это указывает на то, что он думает, что эта строка продолжается. Вам нужно правильно экранировать его либо с помощью дополнительного ' символа: lname:'O''Reilly' , либо с помощью $$ для границ строки.
  2. вы используете неправильные кавычки для строк в map — вы используете double вместо single
  3. у вас неправильные типы данных для некоторых полей, например, reviewer_id , и т.д.
  4. вам не нужно заключать имена столбцов в двойные кавычки — это требуется только в том случае, если вы хотите использовать имена с учетом регистра

Рабочий запрос следующий:

 INSERT INTO reviewers(
reviewer_id,
reviewer_username,
reviewer_personal_details,
reviewer_preferences
)
VALUES (
30,
'Reilio',
{fname:'Jack',lname:$$O'Reilly$$, age:19},
{'genres':{'id':'28','name':'Action'},
'production_company':{'id':'3333','name':'Kangaroo Pictures'},
'production_country':{'iso_3166_1':'AU','name':'Australia'}
}
);
  

Я рекомендую прочитать документацию Cassandra или взять бесплатную книгу о Cassandra и прочитать хотя бы первую ее часть