如何在Cassandra中插入包含$作为值的json对象

时间:2018-11-19 18:09:22

标签: cassandra cql cassandra-3.0

我必须通过datastax在cassandara db中将几个值添加为货币,其中一个值为$。但这是失败的。

INSERT INTO concept_value_set (concept_name,value_set) 
    VALUES ('@CurrencyType',{'Dollar', 'Usd', 'Euro', 
    'Pound', 'Frank', 'Renminbi', '$'});

这会导致系统出现问题。

我尝试使用来逃避$

INSERT INTO concept_value_set (concept_name,value_set) 
   VALUES ('@CurrencyType',{'Dollar', 'Usd', 'Euro', 
   'Pound', 'Frank', 'Renminbi', '$$'});

但它也失败。

这里是否有逃脱$的方法。我找不到任何适当的链接。

1 个答案:

答案 0 :(得分:2)

我认为美元符号不是您的问题。我认为这是JSON值使用单引号的方式。重建表(基于提供的信息),我想出了以下结构:

CREATE TABLE concept_value_set (
  concept_name TEXT PRIMARY KEY,
  value_set TEXT);

我能够使它起作用:

cassdba@cqlsh:stackoverflow> INSERT INTO concept_value_set JSON '{
    "\"concept_name\"":"@CurrencyType",
    "\"value_set\"":"Dollar, Usd, Euro, Pound, Frank, Renminbi, $"}';

现在,我可以在表中查询TEXT:

cassdba@cqlsh:stackoverflow> SELECT * FROM concept_value_set
                             WHERE concept_name='@CurrencyType';

 concept_name  | value_set
---------------+----------------------------------------------
 @CurrencyType | Dollar, Usd, Euro, Pound, Frank, Renminbi, $

(1 rows)

还可以查询表以获取JSON,如下所示:

cassdba@cqlsh:stackoverflow> SELECT JSON value_set FROM concept_value_set
                             WHERE concept_name='@CurrencyType';

 [json]
---------------------------------------------------------------
 {"value_set": "Dollar, Usd, Euro, Pound, Frank, Renminbi, $"}

(1 rows)

您可以在主Apache Cassandra project documentation site以及DataStax的文档站点(INSERT JSONQUERY JSON)上找到有关在Cassandra中使用JSON的更多信息。

希望这会有所帮助。