【问题标题】:Cassandra CLI command with cqlsh -e how to declareCassandra CLI 命令与 cqlsh -e 如何声明
【发布时间】:2019-01-22 16:15:25
【问题描述】:

在我的 Cassandra 表中,它是用大写的所有列创建的。当我们尝试在 cqlsh 终端中选择列时,我们能够选择这些列,但是当我们尝试基于 cqlsh -e 提取相同的查询时,遇到了转义字符的问题。

cqlsh:key1> select "PLAN_ID" ,"A_ADVERTISER_ID" ,"ADVERTISER_NAME"  from key1.plan_advertiser where "PLAN_ID" = '382633' and "A_ADVERTISER_ID" = 15019;

 PLAN_ID | A_ADVERTISER_ID | ADVERTISER_NAME
---------+-----------------+----------------------
  382633 |           15019 | Hanesbrands, Updated

NMH206576286LM:sparklatest0802 KarthikeyanDurairaj$ cqlsh -e 'select "PLAN_ID" ,
  "A_ADVERTISER_ID" ,"ADVERTISER_NAME"  from key1.plan_advertiser 
  where "PLAN_ID" = '382633' and "A_ADVERTISER_ID" = 15019'
<stdin>:1:InvalidRequest: Error from server: code=2200 [Invalid query] 
  message="Invalid INTEGER constant (382633) for "PLAN_ID" of type text"

NMH206576286LM:sparklatest0802 KarthikeyanDurairaj$ 

【问题讨论】:

    标签: cassandra datastax cql cqlsh


    【解决方案1】:

    cqlsh 在这方面可能有点棘手。虽然它不允许您转义单引号,但它确实允许您转义双引号。这对我有用:

    $ bin/cqlsh -u cassdba -p flynnLives -e "SELECT * FROM stackoverflow.plan_advertiser
       where \"PLAN_ID\" = '382633' and \"A_ADVERTISER_ID\" = 15019"
    
     PLAN_ID | A_ADVERTISER_ID | ADVERTISER_NAME
    ---------+-----------------+----------------------
      382633 |           15019 | Hanesbrands, Updated
    
    (1 rows)
    

    这样,我们将 CQL 语句从单引号切换到双引号,列值使用单引号,然后转义列名周围的双引号。

    【讨论】:

      猜你喜欢
      • 2014-08-18
      • 1970-01-01
      • 2016-08-28
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      相关资源
      最近更新 更多