Cassandra - 使用 CQL 将数据插入嵌套集合类型

标签 cassandra cql

我需要一些有关在表(具有嵌套集合 TYPE)列中插入数据的帮助。

我收到以下错误:

Error from server: code=2200 [Invalid query] message="Unknown field 'icon_id' in value of user defined type tst_diag_msg_typ"

预先感谢您的帮助!!

这就是我正在做的事情:

CREATE TYPE cs_veh.tst_icon_typ (
   icon_id text,
   icon_val text
);


CREATE TYPE cs_veh.tst_diag_msg_typ (
   msg_id text,
   msg_priority int,
   msg_text text,
   IconReason SET <FROZEN<tst_icon_typ>> 
);


CREATE TABLE test_veh_health
(VIN text,
eventtimestamp timestamp,
DiagnosticMessages SET < FROZEN <tst_diag_msg_typ>>,
PRIMARY KEY((VIN),eventtimestamp ))
WITH CLUSTERING ORDER BY (eventtimestamp DESC);
insert into test_veh_health
( VIN,
  eventtimestamp
, DiagnosticMessages 
)
values
('TEST122227751',
 toTimestamp(now())
,{{msg_id : '24.0:ENGINE:MESSAGE', msg_priority : 37, msg_text : 'Oil pressure: Engine off! See owners manual.' }
, { icon_id : 'xx',    icon_val: 'text'}
}
);

最佳答案

尝试下面的插入语句:

INSERT INTO test_veh_health(vin, eventtimestamp, diagnosticmessages) VALUES (
    'TEST122227751', 
    toTimestamp(now()),
    {
      {
        msg_id : '24.0:ENGINE:MESSAGE', 
        msg_priority : 37, 
        msg_text : 'Oil pressure: Engine off! See owners manual.' , 
        iconreason : { 
          {
            icon_id : 'xx',
            icon_val: 'text'
          }
        }
      }
    }
);

输出:

cqlsh:test> SELECT * FROM test_veh_health ;

@ Row 1
--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------
 vin                | TEST122227751
 eventtimestamp     | 2017-08-11 19:07:27.545000+0000
 diagnosticmessages | {{msg_id: '24.0:ENGINE:MESSAGE', msg_priority: 37, msg_text: 'Oil pressure: Engine off! See owners manual.', iconreason: {{icon_id: 'xx', icon_val: 'text'}}}}

@ Row 2
--------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------
 vin                | TEST122227751
 eventtimestamp     | 2017-08-11 18:54:57.519000+0000
 diagnosticmessages | null

关于Cassandra - 使用 CQL 将数据插入嵌套集合类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45641070/

相关文章:

database - 即使我们事先不知道键(或键范围),是否可以使用 cassandra 查询一个值(或一个值集)?

java - 在同一服务的多个实例上操作数据库中的数据

Cassandra 有效的列名

hadoop - Cassandra 查询灵活性

Cassandra 根据时间戳更新或插入

cassandra - 在 cassandra db 的 map<text,text> 中插入数据

cassandra - 获取 Cassandra 的日期范围 - 选择 timeuuid,IN 返回 0 行

cassandra - 将来如何删除带有时间戳的墓碑

node.js - Cassandra 当前的 Node.js 驱动程序是什么?

java - secure-connect-DBNAME.zip 上传到存储库是否安全?