2

在 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是否有这种类型的支持吗?如果是,那么我应该如何正确地做到这一点?

4

2 回答 2

2

cqlsh 并不是真正打算成为脚本环境。听起来您最好使用 Python CQL 驱动程序:https ://github.com/datastax/python-driver

于 2013-08-10T22:11:54.537 回答
0

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

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

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

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

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

于 2015-08-13T04:30:42.887 回答