2010-07-16 2 views
13

Ich habe etwa 250.000 JSON-formatierte Dateien, jedes mit einem Objekt darin (formatiert, wie CouchDB es mag mit _id). Was ist der beste Weg, diese auf meinen Remote-CouchDB-Server als Datensätze zu importieren?Batch-Import von JSON-Dokumenten zu Apache CouchDb

-Ich bin auf einer Windows XP-Maschine.

-Ich habe Internetzugang, aber ich kann keinen CouchDB-Server auf meinem lokalen Rechner einrichten und muss WWW zugänglich sein (Firewall-Einschränkungen.), Also keine einfache Replikation.

Antwort

17

ich sehr würde vorschlagen, dass Sie die Bulk-doc API in der couchdb Wiki sehen in: http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API

Grundsätzlich machen Sie eine POST-Anforderung an /someDatabase/_bulk_docs die wie folgt aussieht:

{ 
    "docs": [ 
    { "_id": "awsdflasdfsadf", "foo": "bar" }, 
    { "_id": "cczsasdfwuhfas", "bwah": "there" }, 
    ... 
    ] 
} 

Genau wie jede Wenn Sie keine anderen _id-Eigenschaften angeben, erstellt couchdb diese für Sie.

Sie können den gleichen Vorgang verwenden, um eine Reihe von Dokumenten zu aktualisieren: Fügen Sie einfach ihre Eigenschaft _rev ein. Wenn Sie eine der zu aktualisierenden Dokumente löschen möchten, fügen Sie dem Dokument eine "_deleted": true-Eigenschaft hinzu.

Wenn Sie eine JSON-Datei mit Ihren Dokumenten und die Verwendung curl haben, könnte es wie folgt aussehen:

curl -H "Content-Type: application/json" --data-binary @/home/xxx/data.json https://usr:[email protected]:5984/someDatabase/_bulk_docs/ 

Beifall.

+2

leichte Korrektur zu Sams großer Antwort. Löschen Sie für Löschungen _deleted: true, nicht _delete. –

+0

Danke Chris - ich tippe immer diesen einen. In der Antwort behoben. –

+0

Neuerer Link zur Dokumentation: http://docs.couchdb.org/en/2.0.0/api/database/bulk-api.html#db-bulk-docs –