Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.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
用python向文档数据库发送数据_Python_Azure_Azure Cosmosdb - Fatal编程技术网

用python向文档数据库发送数据

用python向文档数据库发送数据,python,azure,azure-cosmosdb,Python,Azure,Azure Cosmosdb,我目前正在尝试使用pydocumentdb库将数据发送到python上的azure document db集合。 事实上,我必须发送大约10万份关于这个集合的文档,这需要很长的时间,大约2个小时 我使用以下方式逐个发送每个文档: for document in documents : client.CreateDocument(collection_link, document) 我做错了吗?有没有其他更快的方法来做这件事呢?或者说花这么长时间是正常的 谢谢 在Azure上,有许多方法

我目前正在尝试使用pydocumentdb库将数据发送到python上的azure document db集合。 事实上,我必须发送大约10万份关于这个集合的文档,这需要很长的时间,大约2个小时

我使用以下方式逐个发送每个文档:

for document in documents :
    client.CreateDocument(collection_link, document)
我做错了吗?有没有其他更快的方法来做这件事呢?或者说花这么长时间是正常的


谢谢

在Azure上,有许多方法可以帮助更快地将数据导入CosmosDB,而不是使用PyDocumentDB API,PyDocumentDB API可以通过HTTP包装相关的REST API

首先,准备好一个json文件,其中包含10000个要导入的文档,然后您可以按照下面的文档导入数据

请参阅文档以通过DocumentDB数据迁移工具导入json数据文件。 请参阅通过MongoDB的mongoimport工具导入json数据文件的文档。 将json数据文件上载到Azure Blob存储,然后使用Azure data Factory将数据从Blob存储复制到CosmosDB,请参阅部分了解更多详细信息。 如果您只是想在编程中导入数据,可以尝试使用连接Azure CosmosDB通过MongoDB wire协议导入数据,请参阅文档


希望有帮助。

我不认为这是批量插入。在dotnet中,有一种方法可以实现您的愿望。看看这个答案!我猜CosmosDB Python SDK操作都是同步的。这意味着对client.CreateDocument的一次调用必须完成其完整的往返过程,然后才能转到循环中的下一个文档。这是难以置信的低效。您需要在往返过程中获得更多并行性或更大批量。不确定如何在Python中实现前者,但后者可以通过使用一个存储过程来实现,在该过程中,您可以发送一个JSON文档数组(不是全部100000个,但可能一次发送1000个)作为存储过程的输入。另一个选项是绕过CosmosDB Python SDK,直接进行REST调用。以下是如何生成一批并行请求:。这种方法的难点通常是编写身份验证令牌,但是您可以从Python SDK中提取该令牌,或者找到另一个SO答案来解释这一点。