Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 使用“问题”-f";CQLSH中运行query.cql文件的标志_Database_Cassandra_Cql_Cqlsh_Cassandra 2.1 - Fatal编程技术网

Database 使用“问题”-f";CQLSH中运行query.cql文件的标志

Database 使用“问题”-f";CQLSH中运行query.cql文件的标志,database,cassandra,cql,cqlsh,cassandra-2.1,Database,Cassandra,Cql,Cqlsh,Cassandra 2.1,我使用cqlsh通过批处理查询向Cassandra添加数据,我可以通过使用“-e”标志的查询加载数据,但不能从使用“-f”标志的文件加载数据。我想那是因为文件是本地的,而Cassandra是远程的。详情如下: 这是我的查询示例(显然还有更多行要插入): 如果我通过“-e”标志输入查询,则它不会出现问题: >cqlsh -e "BEGIN BATCH; INSERT INTO keyspace.table (id, field1) VALUES ('1','value1'); INSERT

我使用cqlsh通过批处理查询向Cassandra添加数据,我可以通过使用“-e”标志的查询加载数据,但不能从使用“-f”标志的文件加载数据。我想那是因为文件是本地的,而Cassandra是远程的。详情如下:

这是我的查询示例(显然还有更多行要插入):

如果我通过“-e”标志输入查询,则它不会出现问题:

>cqlsh -e "BEGIN BATCH; INSERT INTO keyspace.table (id, field1) VALUES ('1','value1'); INSERT INTO keyspace.table (id, field1) VALUES ('2','value2'); APPLY BATCH;" -u username -p password -k keyspace 99.99.99.99
但如果我将查询保存到文本文件(query.cql)并按如下方式调用,则会得到以下输出:

>cqlsh -f query.cql -u username -p password -k keyspace 99.99.99.99

Using 3 child processes

Starting copy of keyspace.table with columns ['id', 'field1'].
Processed: 0 rows; Rate:       0 rows/s; Avg. rate:       0 rows/s
0 rows imported from 0 files in 0.076 seconds (0 skipped).
Cassandra显然接受命令,但不读取文件,我猜这是因为Cassandra位于远程服务器上,而文件位于本地。我使用的Cassandra实例是其他用户的托管服务,因此我没有权限将文件复制到文件夹中

如何在只有CLI访问权限的Cassandra远程实例上运行此查询


我希望能够使用另一个工具来构建query.cql文件,并让批处理作业运行带有“-f”标志的命令,但我无法确定我是如何出错的。

您正在执行一个localcqlsh客户端,因此它应该能够访问您的本地
query.cql
文件

尝试删除
开始批处理
应用批处理
,只需让2个
语句插入
查询.cql
中,然后重试

另一种快速插入数据的解决方案是提供一个csv文件,并在
cqlsh
中使用COPY命令。阅读这篇博文:


通过在每行生成一个
cqlsh-e'…'
来编写插入脚本是可行的,但由于doanduyhai,它的速度会非常慢。删除
开始批处理
应用批处理
语句修复了该问题。我来看看COPY命令,你知道csv文件是否需要特定的格式吗?cqlsh COPY命令在csv格式方面非常灵活。只需在cqlsh中键入
help COPY
,即可列出所有可用选项
>cqlsh -f query.cql -u username -p password -k keyspace 99.99.99.99

Using 3 child processes

Starting copy of keyspace.table with columns ['id', 'field1'].
Processed: 0 rows; Rate:       0 rows/s; Avg. rate:       0 rows/s
0 rows imported from 0 files in 0.076 seconds (0 skipped).