2011-04-25 5 views
2

Pour importer un grand ensemble de données JSON dans MongoDB nous avons mongoimport utilitaire qui fonctionne comme ça:Importation d'un grand groupe de données dans MongoDB via MongoId

mongoimport --host xxx.xxx.xxx.xxx --db destination-db -c tags < tmp/source-file.json 

Est-il possible d'appeler « mongoimport » en utilisant MongoId, le rubis objet -Document-Mapper pour MongoDB?

Merci Luca

+0

Y a-t-il une raison pour laquelle vous voudriez faire cela? – lobster1234

+0

pour incarner l'application 'business logic' dans rails, en évitant la commande 'external' shell à utiliser dans crontab ou quelque chose, qui est devenu dépendant de la plate-forme. Comment utiliseriez-vous mongoimport avec Heroku par exemple? –

+0

Donc, vous avez une exportation quelque part (par quel processus?) Et vous voulez importer cela en utilisant le code au lieu de l'utilitaire? – lobster1234

Répondre

2

MongoId est effectivement un emballage autour du conducteur Ruby. Le pilote Ruby devrait vous permettre d'exécuter l'une des commandes de la base de données. Cependant, mongoimport n'est pas une commande. mongoimport est un fichier binaire (ou exécutable) distinct.

La seule façon d'exécuter mongoimport à partir de Ruby est de "sortir". Généralement, cela implique l'utilisation d'une forme de commande exec. Voici le premier lien de recherche pour running shell commands from Ruby.

+0

Merci Gates VP article très utile. Je reçois enfin le travail en cours d'exécution du système ("mongoimport --host localhost --db myDB --collection repo --file tags.json -f dépôts") –

1

Vous pouvez également analyser le fichier JSON à partir de votre fichier et exécuter simplement Model.create(json_obj) et Mode.save directement dans une tâche rake.

+0

bonne idée grâce chug2k –