繁体   English   中英

CAML查询项以增量方式

[英]CAML query items in increments

我目前有一个sharepoint2010列表,其中包含大约200,000条记录。

我想获取每条记录,对其进行调整,对其进行按摩,然后将其存储在SQL表中。

截至目前,我正在像这样使用sharepoint 2010 Web服务方法GetListItems ...

System.Xml.XmlNode nodeListItems = client.GetListItems("guid", "", query, viewFields, RowNumber, queryOptions, null);

查询200000条记录太多,无法一次查询。 我该如何解决? GetListItems方法采用CAML查询参数。

有没有办法做到这一点,例如一次说5000条记录? 如何构造CAML查询来做到这一点?

除非有人完全有更好的方法来做到这一点?

是的,您可以对结果进行分页。 第五个参数是页面大小,您可以通过RowNumber设置。 如果您想要页面大小为5000,请将其设置为5000。

可以从GetListItems方法文档中查看有关访问后续页面的详细信息。

GetListItems方法支持服务器端分页。 此方法返回的XML数据在rs:Data元素内包含ListItemCollectionPositionNext属性,该属性包含支持分页的信息。 该字符串包含排序字段中的数据以及分页所需的其他项目的数据。 您应该将此字符串视为内部字符串,而不要对其进行修改; 对其进行修改会产生意想不到的结果。 以下示例显示了支持分页时此返回值的形式。

 <rs:Data ListItemCollectionPositionNext=" Paged=TRUE&p_ID=100&View= %7bC68F4A6A%2d9AFD%2d406C%2dB624%2d2CF8D729901E%7d&PageFirstRow= 101" Count=1000 > <z:row ows_FirstName="Nancy" ows_LastName="Name" ….. /> ... </rs:Data> 

要获取下一页数据,请使用queryOption参数,如以下示例所示。

 <QueryOptions> <Paging ListItemCollectionPositionNext=" Paged=TRUE&p_ID=100&View= %7bC68F4A6A%2d9AFD%2d406C%2dB624%2d2CF8D729901E%7d&PageFirstRow= 101" /> </QueryOptions> 

因此,您要做的就是从每个页面的结果集中获取该属性中的数据,并将其添加到查询中以获取下一页。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM