我正在研究基于Nodejs的脚本,以将大型csv文件导入ibm cloudant数据库。我对该脚本的处理方法如下:
到目前为止有效的方法:
面临的问题:
确切错误:
注意:
有人可以提出解决此要求的最佳方法而又不会遇到我上面提到的问题吗?任何其他满足此要求的npm软件包也都受到欢迎。任何对我的开发方法进行更改的建议也将受到欢迎。
答案 0 :(得分:0)
假设您的CSV行按ID排序,则可以先批量获取:
请求:
POST /db/_all_docs HTTP/1.1
Accept: application/json
Content-Length: 70
Content-Type: application/json
Host: localhost:5984
{
"keys" : [
"a_id123",
"b_id123",
"c_id123",
"d_id123",
]
}
然后您将获得如下内容: 回复
{
"total_rows" : 2666,
"rows" : [
{
"value" : {
"rev" : "1-a3544d296de19e6f5b932ea77d886942"
},
"id" : "a_id123",
"key" : "a_id123"
},
{
"value" : {
"rev" : "1-91635098bfe7d40197a1b98d7ee085fc"
},
"id" : "b_id123",
"key" : "b_id123"
}
],
"offset" : 0
}
现在,您可以遍历响应,查看哪些文档存在,哪些不存在。
此后,您可以批量添加不存在的文档:
请求:
POST /db/_bulk_docs HTTP/1.1
Accept: application/json
Content-Length: 109
Content-Type:application/json
Host: localhost:5984
{
"docs": [
{
"_id": "c_id123",
"foo": "bar",
},
{
"_id": "d_id123",
"foo": "bar c",
},
{
"_id": "a_id123",
"_rev": "1-a3544d296de19e6f5b932ea77d886942",
"foo": "updated",
}
]
}
批量获取文件: https://docs.couchdb.org/en/stable/api/database/bulk-api.html#post--db-_all_docs
用于批量创建/更新的文档: https://docs.couchdb.org/en/stable/api/database/bulk-api.html#db-bulk-docs