【问题标题】:Inserting a hard-coded UUID via CQLsh (Cassandra)通过 CQLsh (Cassandra) 插入硬编码的 UUID
【发布时间】:2013-10-04 00:55:21
【问题描述】:

希望通过 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'});

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

我似乎找不到任何可转换为正确类型的 CQL 函数。我需要从 python 脚本中执行此操作吗?

谢谢, 克里斯

【问题讨论】:

  • 你应该接受这个答案,因为它肯定会解决你的问题(想想感谢信)

标签: cassandra uuid cql cqlsh


【解决方案1】:

您不应该在 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() 的输出插入到文本字段中?例如插入 devices(....) 值( cast (uuid() as text), '9q9p3yyrn1', ...)
【解决方案2】:

替代:使用uuid() 函数。我在 DevCenter 1.6.0 中对此进行了测试。

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

【讨论】:

  • 这是一个糟糕的答案,因为uuid() 不是 OP 要求的常量
猜你喜欢
  • 2020-12-17
  • 1970-01-01
  • 2018-08-12
  • 2021-10-01
  • 2014-12-18
  • 2016-06-24
  • 2020-03-15
  • 2016-03-14
  • 2021-11-21
相关资源
最近更新 更多