Подтвердить что ты не робот

CouchDB дамп в файл и загрузка из файла

Я не могу реплицировать между двумя серверами couchdb, поэтому я хотел бы сбросить файл с одного сервера и загрузить с файла на другой сервер.

Я использовал этот оператор для сброса, и он работал нормально:

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"}

Любые идеи?

4b9b3361

Ответ 1

Как сказано, вы должны использовать аргумент ", а не " как параметр -H

Если вы являетесь пользователем Linux или MacOSX, вы можете использовать инструмент couchdb-dump, который в основном работает с оболочкой bash.

Он удаляет базу данных в локальном файле (текстовый файл 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

Ответ 2

Причина вашей фактической ошибки заключается в том, что вы используете " вместо обычного ASCII " вокруг вашего аргумента -H в командной строке.

Однако реальное решение здесь состоит в том, чтобы просто скопировать файл <DATABASE_NAME>.couch из каталога /path/to/var/lib/couchdb с одного сервера на другой.

Ответ 3

Вы можете использовать следующую командную строку для преобразования вывода команды 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

jq - это имя превосходного процессора командной строки очень полезно (т.е. в этой ситуации).

Надеюсь, что это поможет.

Ответ 4

В качестве альтернативного решения вы можете использовать утилиты couchdb-load и couchdb-dump из проекта couchdb-python.