通过CQLsh(Cassandra)插入硬编码UUID

50

希望通过CQLsh脚本填充一些静态测试数据。

这种方式不起作用:(device_id是UUID)

insert into devices (device_id, geohash,name, external_identifier, measures, tags) 
values ('c37d661d-7e61-49ea-96a5-68c34e83db3a','9q9p3yyrn1', 'Acme1', '936', {'aparPower','actPower','actEnergy'},{'make':'Acme'});

错误请求: 无效的字符串常量 (c37d661d-7e61-49ea-96a5-68c34e83db3a),用于类型为uuid的device_id

我似乎找不到任何CQL函数可以转换为正确的类型。我需要从Python脚本中完成吗?

谢谢, Chris


1
你应该接受答案,因为它肯定解决了你的问题(考虑感谢留言)。 - Bruce
2个回答

94

您不应该在UUID周围加引号,以防止它被解释为字符串,即:

insert into devices (device_id, geohash,name, external_identifier, measures, tags) 
 values 
(c37d661d-7e61-49ea-96a5-68c34e83db3a,'9q9p3yyrn1', 'Acme1', '936', {'aparPower','actPower','actEnergy'},{'make':'Acme'});

有没有可能将uuid()函数的输出插入到文本字段中?例如,插入到设备表中:insert into devices(....) values ( cast (uuid() as text), '9q9p3yyrn1', ...) - Peter

-1

另一种方法是使用uuid()函数。我已经在DevCenter 1.6.0中测试过了。

insert into CHANGE_LOG (someid, modifieddatetime, snum, gnum, source) 
values ( uuid() , '2000-12-12 08:00:00', '21A', '', 'system');

2
这是一个不好的答案,因为 uuid() 不是 OP 所要求的常量。 - sdgfsdh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接