将数据插入 Cassandra 中的用户定义类型
Inserting data into user defined type in Cassandra
我在插入 JSON 和更新数据到我的 Cassandra table 时遇到问题。
我有一个 table 结构如下:
CREATE TYPE keyspace.connected_hw (
connected_element text,
support_list frozen<list<text>>
);
CREATE TABLE keyspace.sample_table (
id text,
name text,
connected_items frozen<keyspace.connected_hw>
)
我的插入脚本如下所示:
INSERT INTO keyspace.sample_table JSON '
{
"id": "12345",
"name": "object 1",
"connected_items": [
{
"connected_element": "56789",
"support_list": ""
}
]
}
'
在我 运行 之后,我得到以下错误:
Error decoding JSON value for connected_items: Expected a map, but got a ArrayList :
我尝试先插入没有“connected_items”列表的其他字段,然后再更新它:
INSERT INTO keyspace.sample_table JSON '
{
"id": "12345",
"name": "object 1",
}
'
这一直有效,直到我尝试用
更新 'connected_items'
UPDATE keyspace.sample_table
SET connected_items = [{connected_element:'56789',support_list:['type1','type2']}]
where id='12345'
在 运行 之后我得到以下错误:
InvalidQueryException: Invalid list literal for connected_items of type frozen<connected_hw>
您将 connected_items
声明为 connected_hw
类型,但您插入的值是 'connected_hw ' 的列表,而且 support_list
不是 text
的列表只是 text
您要么更改 insert/update 格式,如下所示:
INSERT INTO sample_table JSON '{"id": "12345", "name": "object 1", "connected_items": { "connected_element": "56789", "support_list": ["a","b"] } }' ;
和
UPDATE sample_table SET connected_items = {connected_element:'56789',support_list:['type1','type2']} where id='12345' ;
或将 connected_items 的类型更改为 connected_hw
的列表
ALTER TABLE sample_table DROP connected_items ;
ALTER TABLE sample_table ADD connected_items list<frozen <connected_hw>>;
我在插入 JSON 和更新数据到我的 Cassandra table 时遇到问题。
我有一个 table 结构如下:
CREATE TYPE keyspace.connected_hw (
connected_element text,
support_list frozen<list<text>>
);
CREATE TABLE keyspace.sample_table (
id text,
name text,
connected_items frozen<keyspace.connected_hw>
)
我的插入脚本如下所示:
INSERT INTO keyspace.sample_table JSON '
{
"id": "12345",
"name": "object 1",
"connected_items": [
{
"connected_element": "56789",
"support_list": ""
}
]
}
'
在我 运行 之后,我得到以下错误:
Error decoding JSON value for connected_items: Expected a map, but got a ArrayList :
我尝试先插入没有“connected_items”列表的其他字段,然后再更新它:
INSERT INTO keyspace.sample_table JSON '
{
"id": "12345",
"name": "object 1",
}
'
这一直有效,直到我尝试用
更新 'connected_items'UPDATE keyspace.sample_table
SET connected_items = [{connected_element:'56789',support_list:['type1','type2']}]
where id='12345'
在 运行 之后我得到以下错误:
InvalidQueryException: Invalid list literal for connected_items of type frozen<connected_hw>
您将 connected_items
声明为 connected_hw
类型,但您插入的值是 'connected_hw ' 的列表,而且 support_list
不是 text
的列表只是 text
您要么更改 insert/update 格式,如下所示:
INSERT INTO sample_table JSON '{"id": "12345", "name": "object 1", "connected_items": { "connected_element": "56789", "support_list": ["a","b"] } }' ;
和
UPDATE sample_table SET connected_items = {connected_element:'56789',support_list:['type1','type2']} where id='12345' ;
或将 connected_items 的类型更改为 connected_hw
的列表ALTER TABLE sample_table DROP connected_items ;
ALTER TABLE sample_table ADD connected_items list<frozen <connected_hw>>;