C# Microsoft.Azure.Cosmos导出大型数据的最有效方法
我需要从Cosmos DB导出数千个文件,我想知道是否有更有效的方法来获取所有这些文档(但我还没有通过浏览文档和搜索找到一个) 现在我正在使用FeedIterator获取结果:C# Microsoft.Azure.Cosmos导出大型数据的最有效方法,c#,azure-cosmosdb,azure-cosmosdb-sqlapi,C#,Azure Cosmosdb,Azure Cosmosdb Sqlapi,我需要从Cosmos DB导出数千个文件,我想知道是否有更有效的方法来获取所有这些文档(但我还没有通过浏览文档和搜索找到一个) 现在我正在使用FeedIterator获取结果: Database database = m_cosmosClient.GetDatabase(m_databaseId); DatabaseResponse databaseResponse = await database.ReadAsync(); // The res
Database database = m_cosmosClient.GetDatabase(m_databaseId);
DatabaseResponse databaseResponse = await database.ReadAsync();
// The response from Azure Cosmos
DatabaseProperties properties = databaseResponse;
Container container = databaseResponse.Database.GetContainer(m_cosmosDbContainer);
QueryDefinition query = new QueryDefinition(queryString);
QueryRequestOptions queryOptions = new QueryRequestOptions { MaxItemCount = 10000, MaxBufferedItemCount = 10000 };
List<Article> results = new List<Article>();
FeedIterator<Article> resultSetIterator = container.GetItemQueryIterator<Article>(query, null, queryOptions);
while (resultSetIterator.HasMoreResults)
{
FeedResponse<Article> response = await resultSetIterator.ReadNextAsync();
results.AddRange(response);
if (response.Diagnostics != null)
{
Console.WriteLine($"\nQueryWithSqlParameters Diagnostics: {response.Diagnostics.ToString()}");
}
}
Database-Database=m_-cosmosClient.GetDatabase(m_-databaseId);
DatabaseResponse DatabaseResponse=等待数据库。ReadAsync();
//来自Azure Cosmos的回应
DatabaseProperties=databaseResponse;
Container Container=databaseResponse.Database.GetContainer(m_cosmosDbContainer);
QueryDefinition查询=新的QueryDefinition(queryString);
QueryRequestOptions queryOptions=new QueryRequestOptions{MaxItemCount=10000,MaxBufferedItemCount=10000};
列表结果=新列表();
FeedIterator resultSetIterator=container.GetItemQueryIterator(查询,null,查询选项);
while(resultSetTiterator.HasMoreResults)
{
FeedResponse-response=await ResultSettings.ReadNextAsync();
结果:AddRange(应答);
如果(response.Diagnostics!=null)
{
Console.WriteLine($“\nQueryWithQlParameters诊断:{response.Diagnostics.ToString()}”);
}
}
我担心,如果没有某种形式的多任务处理,我可能会耗尽内存,而且运行时间越快越好。如果您想从工作站运行提取,Cosmos DB数据迁移工具是一个很好(且简单)的选择。它可以交互运行,也可以使用脚本自动运行 在Azure Data Factory中创建作业有点复杂,但也提供了更大的灵活性
讨论在Cosmos DB内外进行数据迁移的各种选项。您是否想过使用Azure data Factory之类的ELT工具感谢Paul的建议,我确实对此进行了研究,但它并不适合这种情况。我正在构建一个在构建代理中运行提取的工具,如果管道发生更改,该工具可能会工作,但由于需要在步骤中执行其他操作,因此它并不适合。然而,这个工具实现了我想要的功能,它允许在单个查询上运行并行进程。虽然这不适合我的目的,但我将把它标记为答案,因为除了编写自定义解决方案之外,似乎没有其他选项出现。