eri*_*riq 24 backup load couchdb dump database-backups
我不能在两个couchdb服务器之间复制,所以我想从一个服务器转储到文件并从文件加载到另一个服务器.
我用这个语句转储,它工作正常:
curl -X GET http://localhost:5984/<DATABASE_NAME>/_all_docs?include_docs=true > FILE.txt
Run Code Online (Sandbox Code Playgroud)
但是,当我使用此语句加载时:
curl -d @FILE.txt -H “Content-Type: application/json” -X POST http://localhost:5984/<DATABASE_NAME>/_bulk_docs
Run Code Online (Sandbox Code Playgroud)
它失败了:
curl: (6) Could not resolve host: application; Host not found {"error":"bad_content_type","reason":"Content-Type must be application/json"}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
Dan*_*e B 15
如上所述,您应该使用选项"
而不是选项的“
as参数-H
如果您是Linux或MacOSX用户,则可以使用couchdb-dump工具,该工具基本上适用于bash shell.
它将数据库转储到本地文件(ASCII文本文件)上,格式为http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API的请求
然后,您可以使用批量文档上载或包中包含的couchdb-dump还原工具还原它.
这是该工具的链接:https://github.com/animamea/couchdb-dump
但你也可以找到其他工具:
https://github.com/stockr-labs/couchdbdump
https://github.com/zebooka/couchdb-dump
小智 9
您可以使用以下命令行将curl命令的输出转换为需要的"docs"结构_bulk_docs
:
curl -X GET 'http://localhost:5984/mydatabase/_all_docs?include_docs=true' | jq '{"docs": [.rows[].doc]}' | jq 'del(.docs[]._rev)' > db.json
Run Code Online (Sandbox Code Playgroud)
jq是一个非常有用的优秀命令行处理器的名称(即在这种情况下).
希望能帮助到你.
您实际出错的原因是您在命令行的参数周围使用“
了ASCII而不是纯ASCII ."
-H
但是,这里的真正解决方案是将<DATABASE_NAME>.couch
文件从/path/to/var/lib/couchdb
目录从一个服务器复制到另一个服务器.