我正在使用cqlsh通過BATCH查詢向Cassandra添加數據,並且可以使用「-e」標誌將查詢加載到查詢中,但是而不是使用「-f」標誌的文件。我認爲這是因爲該文件是本地的,而Cassandra是遠程的。詳情如下:在CQLSH中使用「-f」標誌運行query.cql文件的問題
這是我的查詢樣本(有更多的行插入,很明顯):
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實例是與其他用戶共同管理的服務,所以我無法訪問它將文件複製到文件夾中。
如何在只有CLI訪問權限的Cassandra遠程實例上運行此查詢?
我想能夠使用另一個工具來構建query.cql文件,並有一個批處理作業用「-f」標誌運行該命令,但我無法弄清楚我怎麼會出錯。
謝謝doanduyhai:閱讀這篇博客文章。刪除'BEGIN BATCH'和'APPLY BATCH'語句解決了這個問題。我會看看** COPY **命令,你知道是否有** csv **文件所需的特定格式? –
關於CSV格式,cqlsh COPY命令非常靈活。只需在** cqlsh **中鍵入'help COPY'即可列出所有可用的選項 – doanduyhai