我正在尝试使用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"
}
}, ...
}
}
但这只是插入一个包含上述对象的文档。
也许这里有人可以指出正确的方向。
答案 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。