2017-06-22 40 views
0

文檔DB我目前正試圖(使用pydocumentdb LIB)將數據發送到一個蔚藍的文檔數據庫收集的蟒蛇。 其實我必須發送約100 000個文件在這個集合,這需要很長時間(約2小時)。將數據發送到在python

我使用一個發送的每個文檔之一:

for document in documents : 
    client.CreateDocument(collection_link, document) 

我做錯了,有另一種更快的方式做到這一點,或者需要很長時間,它只是正常的。

謝謝!

+0

我不認爲這是什麼,比如批量插入。有一種方法可以在dotnet中做一些你想做的事情。看看這個答案! https://stackoverflow.com/questions/41744582/fastest-way-to-insert-100-000-records-into-documentdb – crazyglasses

+0

我的猜測是CosmosDB Python SDK操作都是同步的。這意味着對'client.CreateDocument()'的一次調用必須完成其全部往返行程才能進入循環中的下一個文檔。這是非常低效的。您需要在往返行程中獲得更多的並行或更大的批次。不知道你如何在Python中完成前者,但是後者可以通過使用存儲過程來完成,在該過程中,您可以將JSON文檔(並非全部100,000個,但一次可能有1,000個)發送到sproc文件。 –

+0

另一種選擇是繞過CosmosDB Python SDK並直接進行REST調用。以下是您如何製作一批並行請求:https://stackoverflow.com/questions/9110593/asynchronous-requests-with-python-requests。這種方法的困難通常是編寫身份驗證令牌,但是您可以從Python SDK中提取該消息,或者找到解釋此問題的其他SO解決方案。 –

回答

0

在Azure上,有很多方法可以幫助數據導入到CosmosDB比使用PyDocumentDB API,它通過HTTP wrappered相關的REST API的速度更快。

首先,要準備好一個JSON文件包括你的導入,那麼你可以按照下面的文件導入數據10,000個文檔。

  1. 請參考文檔How to import data into Azure Cosmos DB for the DocumentDB API?通過DocumentDB數據遷移工具導入json數據文件。
  2. 參考文檔Azure Cosmos DB: How to import MongoDB data?通過的MongoDB的mongoimport工具導入JSON數據文件。
  3. 上傳JSON數據文件到Azure的Blob存儲,然後使用Azure的數據工廠從Blob存儲到CosmosDB複製數據,請參見部分Example: Copy data from Azure Blob to Azure Cosmos DB瞭解更多的細節。

如果你只是想導入編程數據,你可以嘗試使用Python MongoDB driver連接Azure的CosmosDB通過MongoDB的線協議導入數據,請參閱文件Introduction to Azure Cosmos DB: API for MongoDB

希望它有幫助。

0

感謝您的答案! 我會嘗試這些提示儘快