web-dev-qa-db-ja.com

CouchDBはファイルにダンプし、ファイルからロードします

2つのcouchdbサーバー間で複製できないため、1つのサーバーからファイルにダンプし、ファイルから他のサーバーにロードします。

私はこのステートメントをダンプに使用しましたが、うまくいきました:

curl -X GET http://localhost:5984/<DATABASE_NAME>/_all_docs?include_docs=true > FILE.txt

しかし、このステートメントを使用してロードした場合:

curl -d @FILE.txt -H “Content-Type: application/json” -X POST http://localhost:5984/<DATABASE_NAME>/_bulk_docs

次のように失敗しました:

curl: (6) Could not resolve Host: application; Host not found {"error":"bad_content_type","reason":"Content-Type must be application/json"}

何か案は?

24
eriq

すでに述べたように、"ではなくの引数として-Hオプション

LinuxまたはMacOSXユーザーの場合は、基本的にbashシェルで機能する couchdb-dump ツールを使用できます。

http://wiki.Apache.org/couchdb/HTTP_Bulk_Document_API の要求に応じてフォーマットされたローカルファイル(ASCIIテキストファイル)にデータベースをダンプします。

次に、ドキュメントの一括アップロードまたはパッケージに含まれているcouchdb-dump復元ツールを使用して、ファイルを復元できます。

これはツールへのリンクです: https://github.com/animamea/couchdb-dump

しかし、他のツールも見つけることができます:

https://github.com/stockr-labs/couchdbdump

https://github.com/zebooka/couchdb-dump

15
Daniele B

次のコマンドラインを使用して、curlコマンドの出力を_bulk_docsには以下が必要です:

curl -X GET 'http://localhost:5984/mydatabase/_all_docs?include_docs=true' | jq '{"docs": [.rows[].doc]}' | jq 'del(.docs[]._rev)' > db.json

jq は、非常に便利な(つまり、この状況で)優れたコマンドラインプロセッサの名前です。

それが役に立てば幸い。

9
Roberto

実際のエラーの理由は、プレーンではなくASCII "あなたの周り-Hコマンドラインの引数。

ただし、ここでの実際の解決策は、<DATABASE_NAME>.couchファイルの/path/to/var/lib/couchdbあるサーバーから別のサーバーへのディレクトリ。

7
smathy

別の解決策として、couchdb-loadおよびcouchdb-dumpユーティリティ couchdb-python プロジェクトから。

2
Kxepal

PouchDBチームのNolanは、優れたツールをいくつか作成しています。これらは、CouchDB(添付ファイルを含む)からダンプおよびロードするのに適しています。

ダンプ/バックアップ:

https://github.com/nolanlawson/pouchdb-dump-cli

ロード/復元:

https://github.com/nolanlawson/pouchdb-load

1
PaulMest