私はcqlshを使用してバッチクエリでデータを追加していますが、 "-e"フラグを使用してクエリでデータをロードできます"-f"フラグを使用したファイルからではありません。ファイルはローカルで、カサンドラは遠隔地であるからだと思う。下記の詳細: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はリモートサーバー上にあり、ファイルはローカルに置かれているためです。私が使用しているCassandraインスタンスは、他のユーザーと管理されているサービスなので、ファイルをフォルダにコピーするためのアクセス権はありません。
CLIアクセスしかないCassandraのリモートインスタンスでこのクエリを実行するにはどうすればよいですか?
別のツールを使用してquery.cqlファイルを作成し、バッチジョブで「-f」フラグを指定してコマンドを実行できるようにしたいが、どうやって間違っているのか分からない。
おかげdoanduyhai恐ろしく遅くなります。 'BEGIN BATCH'と' APPLY BATCH'文を削除することで問題は解決しました。 ** COPY **コマンドを見ていきますが、** csv **ファイルに必要な特定のフォーマットがあるかどうか知っていますか? –
cqlsh COPYコマンドは、CSVフォーマットに関して非常に柔軟です。 ** cqlsh **の中に 'help COPY'と入力するだけで、利用可能なすべてのオプションがリストされます – doanduyhai