如果我有一个类似于这样的json文件:
{"name":"bob","hi":"hello"}
{"name":"hello","hi":"bye"}
是否可以选择将其导入couchdb?
答案 0 :(得分:6)
从@Millhouse回答开始,但我的文件中有多个文档,我使用了
cat myFile.json | lwp-request -m POST -sS "http://localhost/dbname/_bulk_docs" -c "application/json"
POST
是lwp-request
的别名,但POST
似乎不适用于debian。如果您使用lwp-request
,则需要使用上述-m
设置方法。
尾随_bulk_docs
允许一次上传多个文档。
答案 1 :(得分:5)
如果您使用的是Linux,可以编写一个快速shell脚本,将有效json文件的内容POST到Couch。
为了测试沙发,我做了类似的事情:
cat myFile.json | POST -sS "http://myDB.couchone.com/testDB" -c "application/json"
myFile.json包含我想导入数据库的json内容。
另一种选择,如果你不喜欢命令行或不使用Linux,并且更喜欢gui,你可以使用像RESTClient这样的工具
答案 2 :(得分:3)
是的,这不是有效的JSON ......
要导入JSON-Objects,我使用curl(http://curl.haxx.se):
curl -X PUT -d @my.json http://admin:secret@127.0.0.1:5984/db_name/doc_id
其中my.json是JSON-Object所在的文件。 当然,你也可以将你的JSON-Object直接放入couchdb(没有文件):
curl -X PUT -d '{"name":"bob","hi":"hello"}' http://admin:secret@127.0.0.1:5984/db_name/doc_id
如果您没有doc_id,可以向couchdb索取:
curl -X GET http://127.0.0.1:5984/_uuids?count=1
答案 3 :(得分:2)
CouchDB不接受JSON对象。要使用单个服务器请求存储所有数据,请使用:
{
"people":
[
{
"name":"bob",
"hi":"hello"
},
{
"name":"hello",
"hi":"bye"
}
]
}
或者,为每一行提交不同的CouchDB请求。
使用cURL从命令行将文件导入CouchDB:
curl -vX POST https://user:pass@127.0.0.1:1234/database \
-d @- -# -o output -H "Content-Type: application/json" < file.json
答案 4 :(得分:2)
这不是我的解决方案,但我发现这可以解决我的问题:
将CouchDB数据库导出到文件的一种简单方法是在终端窗口中运行以下Curl命令:
curl -X GET http://127.0.0.1:5984/[mydatabase]/_all_docs\?include_docs\=true > /Users/[username]/Desktop/db.json
下一步是将导出的json文件修改为如下所示(注意_id):
{
"docs": [
{"_id": "0", "integer": 0, "string": "0"},
{"_id": "1", "integer": 1, "string": "1"},
{"_id": "2", "integer": 2, "string": "2"}
]
}
您需要查看的主要内容是在“docs”代码块中添加文档。完成此操作后,您可以运行以下Curl命令将数据导入CouchDB数据库:
curl -d @db.json -H "Content-type: application/json" -X POST http://127.0.0.1:5984/[mydatabase]/_bulk_docs
复制数据库 如果要将数据库从一个服务器复制到另一个服务器。运行以下命令:
curl -H 'Content-Type: application/json' -X POST http://localhost:5984/_replicate -d ' {"source": "http://example.com:5984/dbname/", "target": "http://localhost@:5984/dbname/"}'
原帖: http://www.greenacorn-websolutions.com/couchdb/export-import-a-database-with-couchdb.php
答案 5 :(得分:2)
回答可能有点晚了。但是如果你可以使用Python而不是使用 couchdb 模块来执行此操作:
import couchdb
import json
couch = couchdb.Server(<your server url>)
db = couch[<your db name>]
with open(<your file name>) as jsonfile:
for row in jsonfile:
db_entry = json.load(row)
db.save(db_entry)
我创建了python脚本来做到这一点(因为我在Internet上找不到一个)。
完整的脚本在这里::
http://bitbucket.org/tdatta/tools/src/
(name - &gt; jsonDb_to_Couch.py)
如果您下载完整的仓库并且:
文字替换所有&#34; _id&#34;在json文件中&#34; id&#34;
运行make load_dbs
它将在您当地的沙发安装中创建4个数据库
希望能帮助新手(像我一样)
答案 6 :(得分:0)
http://github.com/zaphar/db-couchdb-schema/tree/master
我的DB :: CouchDB :: Schema模块有一个脚本,可以帮助将一系列文档加载到CouchDB数据库中。 couch_schema_tool.pl脚本接受文件作为参数,并将该文件中的所有文档加载到数据库中。只需将每个文档放入一个数组中:
[ { “名”: “鲍勃”, “喜”: “你好”}, { “名”: “你好”, “喜”: “拜拜”} ]
它会将它们加载到数据库中。虽然我没有测试我最新的代码来反对CouchDB的最新代码,所以如果你使用它并且它会中断,请告诉我。我可能需要更改某些内容以适应新的API更改。
杰里米