在cqlsh中输入“JSON”异常没有可行的替代方法。无法在Cassandra表中插入JSON

时间:2016-07-25 10:25:36

标签: cqlsh

我正在尝试使用shell和Java代码在Cassandra表中插入JSON,但是收到此错误:  输入JSON

时没有可行的选择
  1. Cassandra版本:  [cqlsh 4.1.1 | Cassandra 2.0.12 | CQL规范3.1.1 |节俭协议19.39.0]
  2. 表格创建脚本  CREATE TABLE用户(id int PRIMARY KEY,age int,state text);
  3. 插入脚本  INSERT INTO用户JSON'{“id”:888,“age”:42,“state”:“TX”}';
  4. 使用Java插入的类似代码:  String cqlStatement =“INSERT INTO users JSON'{\”id \“:888,\”age \“:21,\”state \“:\”TX \“}'”;     cassandraTemplate.execute(cqlStatement);
  5. 在以下两种情况下获得异常:     输入'JSON'时没有可行的选择 5.我是否需要在Cassandra中设置一些东西来接受终端中的JSON命令?

2 个答案:

答案 0 :(得分:0)

版本2.0.12不可用。看起来像Cassandra 2.2是支持" INSERT INTO用户JSON ..."的最低版本。

使用< 2.2这里有替代方案:

insert JSON String in Apache-Cassandra 0.8.2

答案 1 :(得分:-1)

找到了适用于Cassandra 2.0.12的问题的答案

先决条件:

  1. 要在表格中插入的缩小版JSON
  2. 链接http://www.httputility.net/json-minifier.aspx可用于缩小JSON(转到此站点并复制JSON
    内容,缩小和复制输出)
  3. 检查是否有任何单引号('),请用双引号代替('')
  4. 确保字符串未终止
  5. 应将JSon插入 text
  6. 在给定的示例中,创建了一个名为employee的表,该表有4列。 Eid是一个整数值,将文本值,ephonenumber作为文本列表,eaddress作为文本。 eaddress是应该插入JSON的列

    执行步骤:

    1. 创建一个表格,让我们说员工包含4列eid,ename,ephonenumber,eaddress with primary key eid
    2. 在CQL终端中执行的命令:

      创建表employee(eid int,ename text,ephonenumber list,eaddress text,primary key(eid));

      1. 在员工表中插入一行,其中ephonenumber为列表,eaddress为json

        在CQL终端中执行的命令

      2. 插入员工(eid,ename,ephonenumber,eaddress)值(1,' Sourav',[' 7773330000',' 5550003333'] ,' {"办公室":" 197 - ITPL - Bangalore"," home":" 196 -Thubarahalli - Bangalore"} &#39);

        1. 如果已插入JSON字符串,请使用select query进行检查
        2. 从员工中选择*