我实际上在用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"
}
}, ...
}
}
但这只是插入一个具有上述对象的文档。
也许这里有人能给我指明正确的方向。
我会使用CouchbasePHP SDK来插入这些文档,而不是使用curl。http://docs.couchbase.com/developer/php-2.0/storing.html
同样对于CB,您不必在文档本身中设置ID。这取决于情况。我可能会考虑使用您在示例中的ID("geodata_de_54476f7e6adc57.141996038"),并将其作为Couchbase中对象的密钥。那么您不一定需要_id。Couchbase中的密钥最多可以是250字节的数据,您可以使它对您的应用程序有意义,这样您就可以非常快速地按密钥进行查找。
另一种选择是,如果您将文档写入文件系统,您还可以使用专门用于批量加载文档的cbdocloader实用程序。如果您在linux上,它位于/opt/couchbase/bin/tools/cbdocloader中。