我有一个最初有大约200行的Excel文件,我能够将excel文件转换为数据表,所有内容都正确地插入到documentdb中。
Excel文件现在有5000行,插入30-40条记录后没有插入,所有行的其余部分都未插入documentdb
我发现了一些例外情况。
Microsoft.Azure.Documents.DocumentClientException:Exception: Microsoft.Azure.Documents.RequestRateTooLargeException,消息: {“错误”:[“请求率很高”]}
我的代码是:
Service service = new Service();
foreach(data in exceldata) //exceldata contains set of rows
{
var student = new Student();
student.id= "";
student.name = data.name;
student.age = data.age;
student.class = data.class;
student.id = service.savetoDocumentDB(collectionLink,student); //collectionlink is a string stored in web.config
students.add(student);
}
Class Service
{
public async Task<string> AddDocument(string collectionLink, Student data)
{
this.DeserializePayload(data);
var result = await Client.CreateDocumentAsync(collectionLink, data);
return result.Resource.Id;
}
}
我做错了吗? 任何帮助都会非常明显。
答案 0 :(得分:4)
<强>更新强>:
截至2015年4月8日,DocumentDB发布了一个数据导入工具,该工具支持JSON文件,MongoDB,SQL Server和CSV文件。您可以在此处找到它:http://www.microsoft.com/en-us/download/details.aspx?id=46436
在这种情况下,您可以将Excel文件另存为CSV,然后使用数据导入工具批量导入记录。
原始答案:
DocumentDB集合每秒配置2,000个请求单元。值得注意的是 - 限制是以请求单位而非请求表示的;因此,编写较大的文档比较小的文档花费更多,扫描比索引搜索更昂贵。
您可以通过检查x-ms-request-charge
HTTP响应标头或RequestCharge
/ ResourceResponse
对象返回的FeedResponse
/ x-ms-retry-after-ms
属性来衡量任何操作(CRUD)的开销。 SDK。
当您耗尽预配置的吞吐量时,会抛出RequestRateTooLargeException。一些解决方案包括:
参考文献: