Cassandra有效列名

时间:2015-08-20 19:42:27

标签: cassandra cql

我正在创建一个可以在mongo或cassandra上运行的api,因此我使用'_id'作为列名。

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

  

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

但是,当我运行此声明时:

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

我返回以下错误:

Invalid syntax at line 1, char 20

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

2 个答案:

答案 0 :(得分:4)

在列名称中下划线?是。列名以下划线开头?否。

来自CREATE TABLE documentation

  

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

答案 1 :(得分:3)

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

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

列名称为_id

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

SELECT "_id" FROM users;