我很难用-e选项执行,列名是引号。
我想使用unix级别执行下面的操作。试图从shell脚本运行。当我尝试将我的值放在引号中时,它会删除我的列的引号。
select * from keyspace.cf where "columnname"=''
试过这个:
cqlsh hostname -e "select * from keyspace.cf where "columnname"=''"
它正在执行cqlsh hostname -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'')"
答案 0 :(得分:0)
您不需要在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;"