如何从cqlsh中运行cql文件(.cql)?

Pin*_*hio 50 cql cassandra cassandra-2.0

我遇到的问题是我想运行以下命令(我不能):

cqlsh < cql_directory/cql_create_stuff.cql
Run Code Online (Sandbox Code Playgroud)

因为我还没有登录到cqlsh.

所以我登录了:

cqlsh -u 'my_username' -p 'my_super_secret_password'
Run Code Online (Sandbox Code Playgroud)

现在我尝试在cqlsh shell中执行命令,但它只是响应语法错误.

基本上,我如何登录cqlsh并在我的文件系统中运行外部CQL脚本?

Mik*_*ura 54

使用 SOURCE

http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/source_r.html

您也可以使用-f选项从文件执行命令

http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/cqlsh.html

  • ``bin/cqlsh -u user -p pwd -f file.cql``应该可以工作 (8认同)
  • 是的,有效.您是否介意在您的回复中明确地涂抹一个例子?谢谢!:) (3认同)
  • 截至 2019 年 10 月,此答案的原始链接已失效。新链接为 https://docs.datastax.com/en/dse/5.1/cql/cql/cql_reference/cqlsh_commands/cqlshSource.html (3认同)

Est*_*era 22

假设使用CQL命令的文件的路径是/mydir/myfile.cql,有两种方法:

如果您尚未登录到cqlsh:

cqlsh -u 'my_username' -p 'my_password' -f /mydir/myfile.cql
Run Code Online (Sandbox Code Playgroud)

如果您已登录到cqlsh:

SOURCE '/mydir/myfile.cql'
Run Code Online (Sandbox Code Playgroud)

注意单引号.还支持$HOME(例如'~/mydir/myfile.cql')的简写表示法.

两种方式也适用于相对路径(到当前目录).


Lev*_*glu 5

假设您的文件名是“ tables.cql ”并且它的位置为/files/tables.cql

A - 本地

cqlsh -f /files/tables.cql
Run Code Online (Sandbox Code Playgroud)

B - 连接到运行 Cassandra 的 Docker 容器

假设运行Cassandra的 Docker 容器的名称是“ cas ”(请记住,如果没有为其分配名称,您也可以使用 docker 容器的哈希 ID);

docker exec -it cas cqlsh -f /files/tables.cql
Run Code Online (Sandbox Code Playgroud)

正如其他答案所述,可以添加-u选项-p以使用用户名/密码组合。