当前位置: 首页 > 知识库问答 >
问题:

Cassandra有效列名

锺离飞鸣
2023-03-14

我正在创建一个api,它将在mongo或cassandra上工作,因此我使用“_id”作为列名。

根据文档,这应该是一个有效的名称:

使用CQL创建的键空间、列和表名称只能包含字母数字和下划线字符。使用CQL创建的用户定义的数据类型名称和字段名称、用户定义的函数名称和用户定义的聚合名称只能包含字母数字和下划线字符。如果使用字母数字字符或下划线以外的任何字符输入这些对象的名称,Cassandra将发出无效的语法消息,并且无法创建对象。

但是,当我运行此语句时:

CREATE TABLE users(_id: bigint, entires: map<timestamp, text>, PRIMARY KEY(_id));

我返回以下错误:

Invalid syntax at line 1, char 20

可以在列名中使用下划线吗?

共有2个答案

施景同
2023-03-14

您可以创建以下划线开头的列名。使用引号:

CREATE TABLE users("_id": bigint, entires: map<timestamp, text>, PRIMARY KEY("_id"));

列名将为id

虽然可以,但这并不意味着您应该有这样一个列-您需要在每个查询中继续使用引号,这会使查询变得很麻烦:

从用户中选择_id;

樊运乾
2023-03-14

列名中的下划线?是的。以下划线开头的列名?没有。

从创建表文档:

有效的表名是以字母开头的字母数字字符和下划线组成的字符串。

 类似资料:
  • 卡桑德拉新手问题。我正在使用REST调用从社交网站收集一些数据。因此,我最终得到了以JSON格式返回的数据。 JSON 只是我的表中的列之一。我试图弄清楚存储JSON字符串的“最佳实践”是什么。 首先我想到使用map类型,但JSON包含字符串、数字类型等的混合。看起来我不能为map键/值声明通配符类型。JSON字符串可能非常大,可能超过10KB。我可以将其存储为字符串,但这似乎效率低下。我会假设这

  • 我想使用Cassandra数据库来存储测试站点的时间序列数据。我正在使用“时间序列数据建模入门”教程中的模式2,但不是将日期存储为日期来限制行大小,而是将其存储为一个<code>int</code>,用于计算自1970年1月1日以来的天数,该值的时间戳是自纪元以来的纳秒数(我们的一些测量设备非常精确,需要精度)。我的值表如下所示: 我创建了一个简单的基准,考虑到使用异步并为批量加载而不是批量准备语

  • Cassandra \ Exception \ InvalidArgumentException:name没有值或列 我正在尝试将一些旧代码从YACassandraPDO更新到Datastax的新PHP扩展,但遇到了一些问题。值得注意的是,这个错误。我不知道为什么,也不知道出了什么问题。 参数号匹配。tax为准备好的报表做了一些完全不同的数据吗? 阵列为: 执行:

  • 我的问题是,这个问题有没有更好的解决办法?多谢.

  • 我有问题将列表字段存储为cassandra数据库中我的表的字段。 我使用的是spring-数据-卡桑德拉,版本1.4.1,发布版。 我的模型包含: 我想用SchemaAction自动创建我的db表。配置类中的recreate_drop_unused架构操作: 它尝试创建表,但发生以下异常:

  • 我在Cassandra中有两个结构相同的柱族: 在第二个表中,行数是第一个表的三倍。例如,在第一个表中,我会有一行(firstname,lastname,countryId): 在第二个表中,我将有行(firstname、lastname、countryId): 我只需要使用集合创建一个列系列,这样我就只有一行与主 countryId (100) 的 John Doe,而其他列的集合。我添加了一个