如何在CQL命令中包含输入参数 - source

时间:2013-08-08 21:53:51

标签: arguments cassandra cql

在Cassandra查询语言(CQL)中,有一个名为source的便捷命令,允许用户执行存储在外部文件中的cql命令。

SOURCE

Executes a file containing CQL statements. Gives the output for each
statement in turn, if any, or any errors that occur along the way.

Errors do NOT abort execution of the CQL source file.

Usage:
      SOURCE '<file>';

但我想知道是否可以允许此外部文件采用其他输入参数。 例如,假设我想使用两个输入参数开发以下cql文件:

create keyspace $1 with
    strategy_class='SimpleStrategy' and
    strategy_options:replication_factor=$2;

并希望通过以下内容在cqlsh中执行此cql:

source 'cql-filename' hello_world 3

我开发了上面的示例cql,将其存储在一个名为create-keyspace.cql的文件中,并尝试了一些我可以提出的可能的命令,但它们都不起作用。

cqlsh> source 'create-keyspace.cql'
create-keyspace.cql:2:Invalid syntax at char 17
create-keyspace.cql:2:  create keyspace $1 with strategy_class='SimpleStrategy' and strategy_options:replication_factor=$2;
create-keyspace.cql:2:                  ^
cqlsh> source 'create-keyspace.cql' hello_world 3
Improper source command.
cqlsh> source 'create-keyspace.cql hello_world 3'
Could not open 'create-keyspace.cql hello_world 3': [Errno 2] No such file or directory: 'create-keyspace.cql hello_world 3'

我能否知道CQl是否有此类支持?如果是,那我该如何正确地做到这一点?

2 个答案:

答案 0 :(得分:2)

cqlsh并不是真正的脚本环境。听起来使用Python CQL驱动程序会更好:https://github.com/datastax/python-driver

答案 1 :(得分:0)

cqlsh只支持一个参数,该文件包含CQL语句:

http://docs.datastax.com/en/cql/3.1/cql/cql_reference/source_r.html

它是一个基于python的命令行客户端。您可以通过在官方Cassandra仓库中查找名为cqlsh.py的文件来查看其源代码:

http://git-wip-us.apache.org/repos/asf/cassandra.git

在该文件中搜索SOURCE以查看其处理方式。