【问题标题】:Executing CQL through Shell Script?通过 Shell 脚本执行 CQL?
【发布时间】:2014-10-06 19:38:18
【问题描述】:

我正在尝试从 shell 脚本执行 CQL 命令。 我能够连接到 cqlsh(我使用的 CQL 版本是 1.1.18)但无法将查询发送到 cql。

任何想法或建议如何进行? 我是否需要连接到 Cassandra 并使用 shell 脚本执行一些命令(选择/更新)??

【问题讨论】:

    标签: cassandra cql cassandra-2.0 cqlsh


    【解决方案1】:
    cqlsh -e "select * from ks.table limit 1;" > ~/output
    

    【讨论】:

    • -e 标志在 1.1.18 版的 cqlsh 上不可用(这是 OP 的问题所在)。
    • 当然,当时不可用。但是,让包含最新答案的顶级 Google 结果非常有用。无论如何,OP 不会接受任何答案。
    • @Aaron 我的 Cqlsh 版本是 4.1.1。早期的 -e 曾经工作,现在不确定是什么导致了错误。我正在使用 python 2.7
    【解决方案2】:

    我不确定 Cassandra 1.1.18,但您应该能够使用 cqlsh-f 标志来完成此操作。假设有一个名为“commands.cql”的 CQL 命令文件。我可以像这样针对我的本地 Cassandra 实例调用这些命令:

    $ cqlsh -f commands.cql -u myusername -p mypassword localhost
    

    如果我想从 Bash 脚本中调用它,脚本的代码将如下所示:

    #!/bin/bash
    cqlsh -f commands.cql -u myusername -p mypassword localhost
    

    将其保存为可执行文件,然后像其他任何文件一样运行它。

    【讨论】:

      【解决方案3】:

      需要连接到 cassandra 并使用 shell 脚本执行一些命令(选择/更新)

      您可以通过以下方式使用 shell 脚本执行命令:

      echo "some QUERY; exit" | cqlsh CASSANDRA_HOST -u 'USER' -p 'PASS'
      

      【讨论】:

        【解决方案4】:

        最后一个建议中的“退出”命令有点hacky。

        我建议使用xargscqlsh -e

        echo "some QUERY;" | xargs cqlsh CASSANDRA_HOST -u 'USER' -p 'PASS' -e

        我最近在使用 docker 时不得不使用这种方法,因为 clqsh -f 不是一个选项(太复杂而无法配置对所需文件的访问)。

        【讨论】:

          【解决方案5】:
          echo "some QUERY;" | xargs cqlsh CASSANDRA_HOST -u 'USER' -p 'PASS' -e
          

          但是,如果您的 Cassandra 实例与执行 shell 脚本的服务器位于不同的服务器上怎么办? (特别是在 StreamSets 中 - 以上是否需要在同一台服务器上安装 Cassandra 以便它可以访问 cqlsh 库?)

          【讨论】:

            猜你喜欢
            • 2020-05-31
            • 1970-01-01
            • 1970-01-01
            • 2023-03-06
            • 2013-04-17
            • 2015-11-01
            • 2018-02-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多