2016-10-10 92 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

相關問題