我想輸入成千上萬的記錄到Arango。我試圖使用描述於:https://docs.arangodb.com/3.0/HTTP/BatchRequest/index.html的Arango的批量/批量導入功能來執行PUT和POST請求的組合,以插入新記錄,或者如果它們已經存在,則更新現有記錄。我的最終解決方案需要從Python腳本運行,可能使用pyArango。我創建了一個樣本HTTP請求批量請求到ArangoDB失敗
POST http://<arango_server>:8529/_db/myDB/_api/batch
,看起來像下面這樣:
Content-Type: multipart/form-data; boundary=P1X7QNCB
Content-Length: <calculated by python or REST Client>
Authorization: Basic <calculated by python requests session or REST Client>
--P1X7QNCB
Content-type: application/x-arango-batchpart
Content-Id: 1
POST /_api/document/model/foo HTTP/1.1
{"data": "bar"}
--P1X7QNCB
我一直沒能得到這個在阿朗戈成功處理。
url = "/_api/document/" + collection + "/" + nodeKey + " HTTP/1.1"
postString = ("--P1X7QNCB\r\n"
"Content-type: application/x-arango-batchpart\r\n"
"Content-Id: " + str(counter) + "\r\n"
"\r\n"
"\r\n"
"PUT " + url+ "\r\n\r\n\r\n" + json.dumps(nodeData) + "\r\n")
batchHeaders = {"Content-Type": "multipart/form-data; boundary=P1X7QNCB"}
response = self.db.connection.session.post(self.db.URL + "/batch", data=postString, headers=batchHeaders)
並使用REST客戶端,其中我手動發佈的內容:我已使用類似於以下(其生成上述要求,即使低於我的代碼的近似具有錯別字)蟒試過。在這兩種情況下,我獲得以下響應回:
{"error":true,"errorMessage":"invalid multipart message received","code":400,"errorNum":400}
與以下記錄在阿朗戈日誌文件:
WARNING received a corrupted multipart message
它是明顯的向任何人,我做錯了,或在那裏我可以尋找更多關於ArangoDB爲什麼拒絕這些請求的細節?
謝謝!
謝謝。我錯過了最後邊界字符串上的終止「 - 」。然而,對於那個固定的Arango現在接受帶有響應者200的多部分請求,但是單個多部分響應全部是:{「error」:true,「errorMessage」:「'METHOD'not implemented」,「code」:501, ERRORNUM「:9}。是否有需要完成的事情來啓用「批量」請求?我正在Linux上運行ArangoDB 3.0.6。 – muddlednbefuddled
更新:我得到了批處理文章的工作。我的第二個問題是多部分頭文件和POST/PUT命令之間的雙倍空間。 arangod多部分分析器似乎需要一個空格,並希望在標題後面的第二行找到'METHOD'。 – muddlednbefuddled