我的目标是浏览我的cassandra数据库,其中的每个条目,并检查某个字段以查看是否需要执行操作。我正在使用这里找到的erlang cql驱动程序:https://github.com/matehat/cqerl
当我在2000年的表中运行select * from keyspace.table limit 10;
时,我获得前10个结果......但是我需要获得下一个1990年。如何使用CQL获得接下来的10个?我看到有支持分页但没有关于如何在cql中执行此操作的文档。
我已经广泛研究了这个问题,似乎关于这个主题的唯一答案是不完整的,许多关于这些问题的评论者没有得到他们想要的答案:Iterating through Cassandra wide row with CQL3
提前感谢您的帮助!
答案 0 :(得分:1)
感谢@Atomic_alarm,我找到了答案。
此处的文档:https://www.datastax.com/dev/blog/client-side-improvements-in-cassandra-2-0指定如何使用CQL进行自动分页。
我没有像文档那样使用cql命令行,而是使用了erlang驱动程序代码。首先,我在表中插入1000行,然后运行下面的函数。它遍历所有1000个结果,一次2页:
test_page() ->
{ok, Client} = cqerl:get_client({}),
{ok, Res} = cqerl:run_query(Client, #cql_query{statement = "SELECT * FROM dks.devices;",
page_size = 2}),
get_more(Res, 0).
get_more(Res, Num) ->
case cqerl:has_more_pages(Res) of
true ->
{ok, Res2} = cqerl:fetch_more(Res),
get_more(Res2, Num+1);
false ->
Num
end.