13

次のようなjsonファイルがある場合:

{"name":"bob","hi":"hello"}
{"name":"hello","hi":"bye"}

これをcouchdbにインポートするオプションはありますか?

4

7 に答える 7

5

Linux を使用している場合は、有効な json ファイルの内容を Couch に POST する簡単なシェル スクリプトを作成できます。

ソファをテストするために、私は次のようなことをしました:

cat myFile.json | POST -sS "http://myDB.couchone.com/testDB" -c "application/json"

myFile.json には、データベースにインポートしたい json コンテンツが含まれています。

別の方法として、コマンド ラインが気に入らない、または Linux を使用しておらず、GUI を好む場合は、RESTClientなどのツールを使用できます。

于 2011-03-15T17:14:04.130 に答える
4

Probably a bit late to answer. But If you can use Python than you can use the couchdb module to do so:

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)

I created the python script to do that(As I could not find one on Internet).

The full script is here: :

http://bitbucket.org/tdatta/tools/src/

(name --> jsonDb_to_Couch.py)

If you download the full repo and:

  1. Text replace all the "_id" in json files to "id"

  2. Run make load_dbs

It would create 4 databases in your local couch installation

Hope that helps newbies (like me)

于 2016-04-03T11:01:14.063 に答える
3

はい、これは有効なJSONではありません...

JSONオブジェクトをインポートするには、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
于 2012-03-26T07:27:53.617 に答える
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

于 2014-09-02T18:12:34.853 に答える
2

その JSON オブジェクトは CouchDB によって受け入れられません。単一のサーバー要求ですべてのデータを保存するには、次を使用します。

{
  "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
于 2009-04-26T14:33:52.660 に答える
0

http://github.com/zaphar/db-couchdb-schema/tree/master

私の DB::CouchDB::Schema モジュールには、一連のドキュメントを CouchDB データベースにロードするのに役立つスクリプトがあります。couch_schema_tool.pl スクリプトは、ファイルを引数として受け取り、そのファイル内のすべてのドキュメントをデータベースにロードします。次のように、各ドキュメントを配列に入れるだけです。

[ {"名前":"ボブ","こんにちは":"こんにちは"}, {"名前":"こんにちは","こんにちは":"さようなら"} ]

それらをデータベースにロードします。ただし、最新のコードを CouchDB の最新のものに対してテストしていないため、使用して壊れた場合はお知らせください。おそらく、新しい API の変更に合わせて何かを変更する必要があります。

ジェレミー

于 2009-05-25T21:12:41.017 に答える