在 CQLSH 中使用“-f”标志到 运行 一个 query.cql 文件的问题
Issues using "-f" flag in CQLSH to run a query.cql file
我正在使用 cqlsh 通过 BATCH 查询将数据添加到 Cassandra,我可以使用“-e”标志通过查询加载数据,但不能使用“-f”标志从文件中加载数据。我认为那是因为文件是本地的,而 Cassandra 是远程的。详情如下:
这是我的查询示例(显然要插入更多行):
BEGIN BATCH;
INSERT INTO keyspace.table (id, field1) VALUES ('1','value1');
INSERT INTO keyspace.table (id, field1) VALUES ('2','value2');
APPLY BATCH;
如果我通过“-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”标志的命令,但我不知道如何我走错了。
您正在执行 local cqlsh 客户端,因此它应该能够访问您的本地 query.cql
文件。
尝试删除 BEGIN BATCH
和 APPLY BATCH
,只保留 query.cql
中的 2 INSERT
语句,然后重试。
另一个快速插入数据的解决方案是提供一个csv文件并使用COPY 命令里面 cqlsh
。阅读此博客 post:http://www.datastax.com/dev/blog/new-features-in-cqlsh-copy
通过每行生成一个 cqlsh -e '...'
脚本插入是可行的,但速度会非常慢
我正在使用 cqlsh 通过 BATCH 查询将数据添加到 Cassandra,我可以使用“-e”标志通过查询加载数据,但不能使用“-f”标志从文件中加载数据。我认为那是因为文件是本地的,而 Cassandra 是远程的。详情如下:
这是我的查询示例(显然要插入更多行):
BEGIN BATCH;
INSERT INTO keyspace.table (id, field1) VALUES ('1','value1');
INSERT INTO keyspace.table (id, field1) VALUES ('2','value2');
APPLY BATCH;
如果我通过“-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”标志的命令,但我不知道如何我走错了。
您正在执行 local cqlsh 客户端,因此它应该能够访问您的本地 query.cql
文件。
尝试删除 BEGIN BATCH
和 APPLY BATCH
,只保留 query.cql
中的 2 INSERT
语句,然后重试。
另一个快速插入数据的解决方案是提供一个csv文件并使用COPY 命令里面 cqlsh
。阅读此博客 post:http://www.datastax.com/dev/blog/new-features-in-cqlsh-copy
通过每行生成一个 cqlsh -e '...'
脚本插入是可行的,但速度会非常慢