2010-07-16 3 views
13

J'ai environ 250 000 fichiers au format JSON, chacun avec un objet en elle (formaté à quel point il aime CouchDB avec _id). Quel est le meilleur moyen de les importer dans mon serveur CouchDB distant en tant qu'enregistrements?lot Importation de documents JSON à Apache CouchDB

-Je suis sur une machine Windows XP.

-J'ai accès à Internet, mais je ne peux pas mettre en place un serveur CouchDB sur ma machine locale et avoir être WWW accessibles (contraintes pare-feu.) Donc pas de réplication facile.

Répondre

17

Je suggère fortement que vous regardez dans l'API en vrac doc dans le wiki CouchDB: http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API

Fondamentalement, vous faites une requête POST à ​​/someDatabase/_bulk_docs qui ressemble à ceci:

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

Comme tout autre requête POST, si vous n'incluez pas les propriétés _id, couchdb les générera pour vous.

Vous pouvez utiliser cette opération pour mettre à jour un tas de documents: il suffit d'inclure leur propriété _rev. Et si vous souhaitez supprimer l'un des documents que vous mettez à jour, ajoutez une propriété "_deleted": true au document.

Si vous avez un fichier JSON avec vos documents et curl utilisation, il pourrait ressembler à:

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

Vive.

+2

légère correction à la grande réponse de Sam. Pour les suppressions, faites _deleted: true, pas _delete. –

+0

Merci Chris - J'ai toujours typé celui-là. Fixé dans la réponse. –

+0

lien récent à docs: http://docs.couchdb.org/en/2.0.0/api/database/bulk-api.html#db-bulk-docs –