用php将文件大量插入couchbase数据库 - 如何?

时间:2014-10-22 08:58:55

标签: php curl couchbase

我正在尝试使用couchbase服务器。

我试过读取一个mysql数据库表,从每个数据行构建一个文档,然后插入带有我用

生成的id的文档
uniqid('table_name'); 

通过cUrl,方法是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"
           } 
       },  ...
   }

}

但这只是插入一个包含上述对象的文档。

也许这里有人可以指出正确的方向。

1 个答案:

答案 0 :(得分:0)

我会使用Couchbase PHP SDK来插入这些文档而不是使用curl。 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。