CouchDB de vidage de fichier et charger à partir du fichier

Je ne peux pas me répliquer entre deux serveurs couchdb, donc je voudrais Dumper à partir d'un serveur et charger à partir du fichier dans l'autre serveur.

j'ai utilisé cette déclaration de vidage et il a bien fonctionné:

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

mais quand j'ai utilisé cette instruction pour charger:

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

il a échoué comme ceci:

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

des idées?

24
demandé sur eriq 2012-07-25 01:24:41

5 réponses

comme dit, vous devriez utiliser le " et pas comme argument du -H option

si vous utilisez Linux ou MacOSX, vous pouvez utiliser couchdb-dump outil, qui fonctionne essentiellement sur shell bash.

il décharge la base de données sur un fichier local (fichier texte ASCII), formaté comme demandé par http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API

alors vous pouvez le restaurer avec le téléchargement de document en vrac ou avec le outil de restauration couchdb-dump inclus dans le paquet.

C'est le lien vers l'outil: https://github.com/animamea/couchdb-dump

Mais vous pouvez trouver d'autres outils aussi:

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

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

14
répondu Daniele B 2013-06-19 00:55:43

vous pouvez utiliser la ligne de commande suivante pour convertir la sortie de la commande curl en structure "docs" que le _bulk_docs nécessite:

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

jq est le nom d'une excellente ligne de commande du processeur très utile (c'est à dire dans cette situation).

j'Espère que ça aide.

8
répondu Roberto 2016-05-18 08:34:43

la raison de votre erreur est que vous utilisez au lieu de simples ASCII " autour de votre -H argument sur la ligne de commande.

cependant, la vraie solution ici est de simplement copier le <DATABASE_NAME>.couch le fichier à partir de la /path/to/var/lib/couchdb répertoire d'un serveur à l'autre.

7
répondu smathy 2012-07-25 04:38:09
couchdb-load et couchdb-dump utilitaires couchdb-python projet.

2
répondu Kxepal 2015-08-31 00:56:44

Nolan de L'équipe de PouchDB fabrique de très bons outils. Ceux-ci fonctionneront bien pour décharger et charger à partir de CouchDB (y compris les pièces jointes):

Sauvegarde/Sauvegarde:

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

Charger/Restauration:

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

1
répondu PaulMest 2016-06-23 07:31:29