如何在 CQL 命令中包含输入参数 - 源代码

Posted

技术标签:

【中文标题】如何在 CQL 命令中包含输入参数 - 源代码【英文标题】:How to include input arguments in the CQL command - source 【发布时间】:2013-08-08 21:53:50 【问题描述】:

在 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 是否有这种类型的支持吗?如果是,那我应该怎么做呢?

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

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

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

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

【讨论】:

以上是关于如何在 CQL 命令中包含输入参数 - 源代码的主要内容,如果未能解决你的问题,请参考以下文章

如何根据命令行输入包含py文件?

如何在 MailChimp 确认页面 url 中包含 URL 参数

如何在 java 文件中包含 jar 文件并在命令提示符下编译

EMR 上的猪:如何在 EXTRACT 函数的正则表达式参数中包含分号

如何在选择案例语句中包含数字和字符串

如何在 bash 别名中包含参数? [复制]