【发布时间】:2018-02-06 22:59:11
【问题描述】:
我想上传一个代表 10k 个文档的 CSV 文件,以快速和原子的方式添加到我的 Cosmos DB 集合中。我有一个类似于以下伪代码的存储过程:
function createDocsFromCSV(csv_text) {
function parse(txt) { // ... parsing code here ... }
var collection = getContext().getCollection();
var response = getContext().getResponse();
var docs_to_create = parse(csv_text);
for(var ii=0; ii<docs_to_create.length; ii++) {
var accepted = collection.createDocument(collection.getSelfLink(),
docs_to_create[ii],
function(err, doc_created) {
if(err) throw new Error('Error' + err.message);
});
if(!accepted) {
throw new Error('Timed out creating document ' + ii);
}
}
}
当我运行它时,存储过程在超时之前创建了大约 1200 个文档(因此回滚而不创建任何文档)。
以前,我使用延续令牌成功更新(而不是创建)存储过程中的数千个文档,并将此答案作为指导:https://stackoverflow.com/a/34761098/277504。但是在搜索文档(例如https://azure.github.io/azure-documentdb-js-server/Collection.html)之后,我没有看到像查询文档那样从创建文档中获取延续令牌的方法。
有没有办法利用存储过程来创建批量文档?
【问题讨论】:
-
您好,我的回答对您有帮助吗?
标签: stored-procedures azure-cosmosdb