#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:
У вас есть несколько проблем в вашем заявлении:
- у вас есть символ одинарной кавычки внутри этой строки:
lname:'O'Reilly'
— это указывает на то, что он думает, что эта строка продолжается. Вам нужно правильно экранировать его либо с помощью дополнительного'
символа:lname:'O''Reilly'
, либо с помощью$$
для границ строки. - вы используете неправильные кавычки для строк в map — вы используете double вместо single
- у вас неправильные типы данных для некоторых полей, например,
reviewer_id
, и т.д. - вам не нужно заключать имена столбцов в двойные кавычки — это требуется только в том случае, если вы хотите использовать имена с учетом регистра
Рабочий запрос следующий:
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 и прочитать хотя бы первую ее часть