2013-02-22 37 views
2

我想在140k對象的Parse中填充數據類。因爲我有GeoPoints,所以無法通過Web界面導入。他們建議的REST API不允許您使用一個API調用創建多個對象。所以,看起來我會做140k API調用。導入140k對象到Parse.com

現在,我有一個具有正確形成的JSON的140k行文件,等待導入到Parse中。

我已經嘗試在我的web服務器上使用PHP進行卷曲。在腳本停止運行之前,我得到了5-10k個對象。我試圖把這個添加到PHP文件中 -

ignore_user_abort(true); 
set_time_limit(0); 

但是,這沒有奏效。所以我想也許我會有更多的Javascript控制權,在碰撞前再次輸入5-10k個對象。我添加了一個超時暫停每50個對象,它仍然崩潰。我在嘗試下一次API調用之前已經試過等待成功響應,或者同時運行它們,並沒有什麼區別。

無論如何,我的問題是如何最有效地使140k REST API調用,而不會崩潰。

回答

2

您可以使用Parse的JSON導入器(而不是CSV)導入地址。有關詳細信息,請參閱Importing Data

1

即使你可以導入使用JSON進口商複雜的佈局,即進口商必須SOM問題大文件

您可以在一個調用中創建多個對象。使用/1/batch,請參閱下面的示例用法;

{ 
    "requests": [{ 
     "method": "POST", 
     "path": "/1/classes/YOURCLASS", 
     "body": { 
      "your": "parameters", 
      "live": "here" 
     } 
    }, { 
     "method": "POST", 
     "path": "/1/classes/YOURCLASS", 
     "body": { 
      "second": "request", 
      "parameters": "here" 
     } 
    }] 
} 

我已經成功地10k左右行這樣的進口沒有任何問題,我也通過終端然而使用PHP和捲曲運行它,這裏的捲曲呼叫參考;

$headers = array(
    'X-Parse-Application-Id: APPID', 
    'X-Parse-REST-API-Key: RESTKEY', 
    'Content-type: application/json' 
); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://api.parse.com/1/batch'); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $json); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$ret = curl_exec($ch); 

CURLOPT_RETURNTRANSFER是沒有必要的,如果你不感興趣,如果一切順利與否,又名「發射後不管」。

祝你好運!

+2

我試過這個,得到了響應'{「code」:154,「error」:「批量請求中的命令太多,限制爲50」}。 3000個呼叫比150k更加艱鉅,但仍然令人望而生畏。我也試圖讓進口商工作。 – James 2013-02-26 17:59:31

+2

你找到解決辦法嗎?看起來批量仍然限於50個請求,而對於大型數據集,這可能會很麻煩。 – thebusiness11 2013-08-23 01:57:40