Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Microsoft.Azure.Cosmos导出大型数据的最有效方法_C#_Azure Cosmosdb_Azure Cosmosdb Sqlapi - Fatal编程技术网

C# Microsoft.Azure.Cosmos导出大型数据的最有效方法

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

我需要从Cosmos DB导出数千个文件,我想知道是否有更有效的方法来获取所有这些文档(但我还没有通过浏览文档和搜索找到一个)

现在我正在使用FeedIterator获取结果:

        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的建议,我确实对此进行了研究,但它并不适合这种情况。我正在构建一个在构建代理中运行提取的工具,如果管道发生更改,该工具可能会工作,但由于需要在步骤中执行其他操作,因此它并不适合。然而,这个工具实现了我想要的功能,它允许在单个查询上运行并行进程。虽然这不适合我的目的,但我将把它标记为答案,因为除了编写自定义解决方案之外,似乎没有其他选项出现。