2014-10-22 109 views
0

我正在嘗試一點與couchbase服務器。用php批量插入文件到couchbase數據庫 - 如何?

我試圖讀MySQL數據庫表,建立從每個數據行的文檔,然後用我與

uniqid('table_name'); 
經由cUrl作者

產生一個id插入文檔中,方法是POST。

這到目前爲止作品不錯,直到腳本插入環島7050個文檔。然後拋出一個異常 - >「沒有緩衝區空間」。

到現在爲止我沒能解決這個問題,所以我決定收集即50行數據建立一個json_encode(d)的字符串,並通過再次cUrl作者張貼。

這個工作,到目前爲止,如果我不設置id - 但我無法弄清楚如何設置插入文件的ID。

其實我嘗試發送我的文檔的格式是這樣的:

{"docs": { 
    "_id": { 
      "geodata_de_54476f7e6adc57.14196038": { 
       "table": "geodata_de", 
       "country": "DE", 
       "postal_code": "01945", 
       "place_name": "Lindenau", 
       "state_name": "Brandenburg", 
       "state_code": "BB", 
       "province_name": "", 
       "province_code": "00", 
       "community_name": "Oberspreewald-Lausitz", 
       "community_code": "12066", 
       "lat": "51.4", 
       "lng": "13.7333", 
       "Xco": "3861.1", 
       "Yco": "943.614", 
       "Zco": "4979.07" 
      } 
     }, ... 
    } 

}

但這只是插入一個文檔與上述目的。

也許這裏有人能指點我正確的方向。

+0

您應該使用couchbase PHP SDK來插入文檔,而不是通過curl來完成。 – Paddy 2014-10-23 12:39:19

+0

我會看看PHP SDK。謝謝! – 2014-10-24 13:29:09

回答

0

我會用Couchbase PHP SDK插入這些文件,而不是使用捲曲。 http://docs.couchbase.com/developer/php-2.0/storing.html

也爲CB,你不必設置ID文件本身英寸這取決於。我可以看看你的例子中使用的ID(「geodata_de_54476f7e6adc57.14196038」),並將其作爲Couchbase中對象的關鍵字。那麼你不一定需要_id。 Couchbase中的密鑰最多可以包含250個字節的數據,您可以使其對應用程序有意義,因此您可以非常快速地通過密鑰進行查找。

另一種選擇是,如果你寫你的文檔的文件系統,你也可以使用cbdocloader工具,它是專門爲批量加載文檔。如果你在linux上,它在/ opt/couchbase/bin/tools/cbdocloader中。

+0

我會看看PHP SDK。是的,我知道,沒有必要將ID存儲在文檔本身中。我試圖插入一個包含由Id命名的doc對象的對象「docs」。這個想法是上傳一個sql文件並將每行插入爲一個文檔,並將其用作我的admincp中的一個函數。所以我認爲cbdocloader不適合我。謝謝! – 2014-10-24 13:35:41