Se ho un file JSON che sembra qualcosa di simile:importazione di file JSON al divano db-
{"name":"bob","hi":"hello"}
{"name":"hello","hi":"bye"}
Esiste un opzione per importare questo in CouchDB?
Se ho un file JSON che sembra qualcosa di simile:importazione di file JSON al divano db-
{"name":"bob","hi":"hello"}
{"name":"hello","hi":"bye"}
Esiste un opzione per importare questo in CouchDB?
Tale oggetto JSON non sarà accettato da CouchDB. Per memorizzare tutti i dati con un singolo uso richiesta del server:
{
"people":
[
{
"name":"bob",
"hi":"hello"
},
{
"name":"hello",
"hi":"bye"
}
]
}
In alternativa, inviare una richiesta CouchDB diverso per ogni riga.
Importare il file in CouchDB dalla riga di comando utilizzando cURL:
curl -vX POST https://user:[email protected]:1234/database \
-d @- -# -o output -H "Content-Type: application/json" < file.json
http://github.com/zaphar/db-couchdb-schema/tree/master
mio DB :: :: CouchDB modulo Schema ha uno script per aiutare con il caricamento di una serie di documenti in un database CouchDB. Lo script couch_schema_tool.pl accetta un file come argomento e carica tutti i documenti in quel file nel database. Basta mettere ogni documento in un array in questo modo:
[ { "name": "bob", "ciao": "ciao"}, { "name": "ciao", "ciao": "bye "} ]
Li caricherà nel database per voi. Piccolo avvertimento anche se non ho testato il mio ultimo codice contro l'ultimo di CouchDB quindi se lo usi e si rompe allora fammi sapere. Probabilmente dovrò cambiare qualcosa per adattarlo alle nuove modifiche API.
Jeremy
Se siete su Linux, è possibile scrivere uno script di shell veloce per pubblicare il contenuto dei file JSON validi Couch.
Per testare divano che ho fatto qualcosa di simile:
cat myFile.json | POST -sS "http://myDB.couchone.com/testDB" -c "application/json"
myFile.json ha il contenuto JSON ho voluto importare nel database.
Un'altra alternativa, se non ti piace riga di comando o non si utilizza Linux, e preferisce un'interfaccia grafica, è possibile utilizzare uno strumento come RESTClient
Sì, questo non è JSON valida ...
Per importare JSON-oggetti che uso ricciolo (http://curl.haxx.se):
curl -X PUT -d @my.json http://admin:[email protected]:5984/db_name/doc_id
dove my.json è un file JSON-Object è in. Naturalmente si può mettere il JSON-Object direttamente in CouchDB (senza un file) così:
curl -X PUT -d '{"name":"bob","hi":"hello"}' http://admin:[email protected]:5984/db_name/doc_id
Se non si dispone di un doc_id, si può chiedere CouchDB per esso:
curl -X GET http://127.0.0.1:5984/_uuids?count=1
Per chiunque abbia avuto un errore su Content-Type nel primo esempio qui, prova questo: 'curl -X POST -d @ data.json http://127.0.0.1:5984/database/_bulk_docs -H 'Content-Type : application/json'' –
Downvoted perché penso che la domanda sia la domanda su più documenti e non solo uno. Credo che tu stia rispondendo come importare solo un documento. –
a partire da @Millhouse risposta, ma con più documenti in mio file ho usato
cat myFile.json | lwp-request -m POST -sS "http://localhost/dbname/_bulk_docs" -c "application/json"
POST
è un alias di lwp-request
ma POST
fa non sembra funzionare su debian. Se si utilizza lwp-request
è necessario impostare il metodo con -m
come sopra.
Il file finale _bulk_docs
consente di caricare più documenti contemporaneamente.
l'api bulk_doc dovrebbe avere tutti i documenti annidati all'interno di un oggetto {{docs ": [documents]}'. –
Non è la mia soluzione, ma ho trovato questo per risolvere il mio problema:
Un modo semplice di esportare un database CouchDB in un file, è quello di eseguire il seguente comando Curl nella finestra del terminale:
curl -X GET http://127.0.0.1:5984/[mydatabase]/_all_docs\?include_docs\=true > /Users/[username]/Desktop/db.json
passo successivo è quello di modificare il file jSON esportato per sembrare qualcosa di simile al di sotto (notare il _id):
{
"docs": [
{"_id": "0", "integer": 0, "string": "0"},
{"_id": "1", "integer": 1, "string": "1"},
{"_id": "2", "integer": 2, "string": "2"}
]
}
Il bit principale che è necessario esaminare è aggiungere i documenti nel blocco di codice "docs". Una volta fatto questo è possibile eseguire il seguente comando Curl per importare i dati in un database CouchDB:
curl -d @db.json -H "Content-type: application/json" -X POST http://127.0.0.1:5984/[mydatabase]/_bulk_docs
Duplicazione di un database di Se si desidera duplicare un database da un server a un altro. Eseguire il seguente comando:
curl -H 'Content-Type: application/json' -X POST http://localhost:5984/_replicate -d ' {"source": "http://example.com:5984/dbname/", "target": "http://[email protected]:5984/dbname/"}'
originale del messaggio: http://www.greenacorn-websolutions.com/couchdb/export-import-a-database-with-couchdb.php
Probabilmente un po 'tardi per rispondere. Ma se è possibile utilizzare Python di quanto si può utilizzare il modulo CouchDB a farlo:
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)
ho creato lo script python per farlo (come io non sono riuscito a trovare uno su Internet).
Lo script completo è qui::
http://bitbucket.org/tdatta/tools/src/
(nome -> jsonDb_to_Couch.py)
Se si scarica la piena pronti contro termine e:
Testo sostituire tutte le "_id" nei file JSON per "id"
Run rendere load_dbs
Creerebbe 4 database nell'installazione del tuo divano locale
Speranza che aiuti i neofiti (come me)
Credo che il tuo codice debba avere le seguenti modifiche: 'couch = couchdb.server (
Grazie Jared. Risolto il problema nel post originale. – Tanmay
Per tutti coloro che cercano "POST": fa parte del pacchetto libwww-perl. – ofrommel