2016-10-10 65 views
1

加载模式后,我必须在BATCH中运行以下插入查询1000次。有没有办法在cql文件cassandra中应用循环?

INSERT INTO keyspace.messages (messageid, message) VALUES 
(uuid(), 'random'); 

我目前的实施是一个radom.cql文件,其中有1000个条目类似下面的脚本。然后使用SOURCE命令在模式上传后应用它们。

BEGIN BATCH 
INSERT INTO keyspace.messages (messageid, message) VALUES (uuid(), 'random'); 
INSERT INTO keyspace.messages (messageid, message) VALUES (uuid(), 'random'); 
INSERT INTO keyspace.messages (messageid, message) VALUES (uuid(), 'random'); 
...till 1000 times 
APPLY BATCH; 

有没有更好的方法来达到同样的效果?

+1

没办法真正做到这一点。但你应该摆脱BEGIN/APPLY BATCH语句。你正在做的是让Cassandra指定一个节点来协调1000个INSERT到剩下的所有节点。如果你不小心,这是杀死节点的好方法。 – Aaron

+0

感谢您的建议亚伦。应用批量多分区数据条目并不好。 – Laxmikant

回答

0

Cassandra还没有任何PL/SQL结构或存储过程,所以这是不可能的。

您必须从应用程序和批处理中执行此操作,但这种方法并不能解决问题,并且是一种不好的使用方法。

+0

感谢Sreekar的回答。我不想从应用程序端执行它,因为它只是模式上传后的一次活动。你是对的,在这里使用批处理是不好的。所以我会从random.cql中删除BIGIN/APPLY批处理。这听起来不错吗? – Laxmikant

+0

是的。那可行。 – Sreekar

相关问题