如何通过cURL将多个JSON文件的多个文档上传到Cloudant DB?

时间:2015-10-13 06:56:32

标签: json api curl couchdb cloudant

目前我可以使用以下命令将单个json文件输出到Cloudant中的文档:curl -X PUT 'https://username.cloudant.com/dummydb/doc3' -H "Content-Type: application/json" -d @numbers.json。我有许多JSON文件要作为不同文档上载到同一个DB中。如何才能完成?< / p>

2 个答案:

答案 0 :(得分:4)

因此,您肯定希望在此方案中使用Cloudant的_bulk_docs API端点。如果你正在进行一堆写操作,它会更有效(并且更具成本效益)。你基本上POST一个包含所有JSON文档的数组。这是关于它的文档:https://docs.cloudant.com/document.html#bulk-operations

更进一步,只要您正确构建了JSON文件,就可以将文件上传到_bulk_docs。在cURL中,它看起来像这样:curl -X POST -d @file.json <domain>/db/_bulk_docs ...(加上内容类型和所有其他冗长的东西)。

从那开始的一步是使用ccurl(CouchDB / Cloudant cURL)工具将cURL语句包装到Cloudant并使它们更简洁。有关详情,请参阅https://developer.ibm.com/clouddataservices/2015/10/19/command-line-tools-for-cloudant-and-couchdb/https://stackoverflow.com/users/4264864/glynn-bird

快乐的沙发!

答案 1 :(得分:0)

您可以创建for loop并从每个JSON文件创建文档。

例如,在下面的命令中,我的目录中有4个JSON文件,我在people数据库中创建了4个文档:

for file in *.json
> do
> curl -d @$file https://username:password@myinstance.cloudant.com/people/ -H "Content-Type:application/json"
> done
{"ok":true,"id":"763a28122dad6c96572e585d56c28ebd","rev":"1-08814eea6977b2e5f2afb9960d50862d"}
{"ok":true,"id":"763a28122dad6c96572e585d56c292da","rev":"1-5965ef49d3a7650c5d0013981c90c129"}
{"ok":true,"id":"763a28122dad6c96572e585d56c2b49c","rev":"1-fcb732999a4d99ab9dc5462593068bed"}
{"ok":true,"id":"e944282beaedf14418fb111b0ac1f537","rev":"1-b20bcc6cddcc8007ef1cfb8867c2de81"}