批量导入JSON文档到Apache CouchDb

15

我大约有250,000个JSON格式文件,每个文件中只有一个对象(格式符合CouchDB的_id要求)。如何将它们作为记录导入到我的远程CouchDB服务器中呢?

-我使用Windows XP机器。

-我可以访问互联网,但我无法在本地计算机上设置CouchDB服务器并使其成为WWW可访问(受防火墙限制),因此没有简单的复制方法。

1个回答

20
我强烈建议您查看couchdb wiki中的批量文档API:http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API 基本上,您需要向/someDatabase/_bulk_docs发出一个POST请求,请求内容如下:
{
  "docs": [
    { "_id": "awsdflasdfsadf", "foo": "bar" },
    { "_id": "cczsasdfwuhfas", "bwah": "there" },
    ...
  ]
}
与任何其他POST请求一样,如果您不包括_id属性,couchdb将为您生成它们。您可以使用相同的操作来更新一堆文档:只需包括它们的_rev属性。如果要删除您正在更新的任何文档,则向文档添加“_deleted:true”属性。如果您有一个包含文档的JSON文件并使用curl,则可能如下所示:
curl -H "Content-Type: application/json" --data-binary @/home/xxx/data.json https://usr:pwd@host:5984/someDatabase/_bulk_docs/

干杯。


2
对Sam出色回答的微小修正。对于删除操作,请使用_deleted:true,而不是_delete。 - J Chris A
谢谢Chris - 我总是打错那个。已在答案中修正。 - Sam Bisbee
新的文档链接:http://docs.couchdb.org/en/2.0.0/api/database/bulk-api.html#db-bulk-docs - Daniel Haley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接