我很难用-e选项执行列名在引号中的情况。
我想使用unix级别执行如下所示的内容。试图从shell脚本中运行。当我试图将我的值放在引号中时,它会删除我的专栏的引号。
select * from keyspace.cf where "columnname"=''试过这个:
cqlsh hostname -e "select * from keyspace.cf where "columnname"=''"它作为cqlsh主机名-e 'select * from keyspace.cf where columnname=‘执行。
stdin>:1:InvalidRequest: Error from server: code=2200 [Invalid query] message="Undefined name columnaname in where clause ('columnname= 'value'')"发布于 2017-05-17 13:49:01
您不需要在columnname周围加上引号,只需要设置它并在其前缀加上一个$。
cqlsh -u cassandra -p cassandra -e "SELECT $COLUMN FROm $KEYSPACE.$TABLE;"这是我写的一个名为getVersion.sh的脚本的摘录。
#!/bin/bash
KEYSPACE="system"
TABLE="local"
COLUMN="release_version"
~/local/apache-cassandra-3.10/bin/cqlsh -u cassandra -p cassandra -e "SELECT $COLUMN FROm $KEYSPACE.$TABLE;"
aploetz@dockingBay94:~/scripts$ ./getVersion.sh
release_version
-----------------
3.10
(1 rows)如果您的列名包含引号,则同样有效。只需确保在变量定义中将它们转义。这是一个类似的脚本,但它查询"columnName" TEXT列:
#!/bin/bash
KEYSPACE="stackoverflow"
TABLE="stuff_with_quotes"
COLUMN="\"columnName\""
~/local/apache-cassandra-3.10/bin/cqlsh -u cassandra -p cassandra -e "SELECT $COLUMN FROm $KEYSPACE.$TABLE;"https://stackoverflow.com/questions/44014569
复制相似问题