2012-01-20 2 views
5

-f [--fields] arg séparés par des virgules liste des noms de champs -f nom , l'âge

  • est-il un moyen d'obtenir la collection comme l'utilisation de décharge, mais pas au format BSON?
  • J'ai besoin des données CSV

Merci

+0

mongodb n'a pas de commande d'export pour le vidage CSV? Même aujourd'hui, 2015? –

Répondre

0

Vous pouvez créer un fichier avec les noms de champs (peut-être plus facile pour vous):

--fieldFile arg   file with fields names - 1 per line 

Dans votre cas, ils pourraient tous être la même chose mais la raison pour laquelle vous devez spécifier les noms de champs est parce qu'ils peuvent être différents pour chaque document, mais les noms de champs dans le csv doivent être corrigés.

10

En bash, vous pouvez créer cette image « export-all-collections-to-csv.sh » et passer le nom de base de données comme le seul argument (ne hésitez pas à réduire à une seule collection):

OIFS=$IFS; 
IFS=","; 

dbname=$1 #put "database name" here if you don't want to pass it as an argument 

collections=`mongo $dbname --eval "rs.slaveOk();db.getCollectionNames();" --quiet`; 
collectionArray=($collections); 

for ((i=0; i<${#collectionArray[@]}; ++i)); 
do 
    keys=`mongo $dbname --eval "rs.slaveOk();var keys = []; for(var key in db.${collectionArray[$i]}.findOne()) { keys.push(key); }; keys;" --quiet`; 
    mongoexport --db $dbname --collection ${collectionArray[$i]} --fields "$keys" --csv --out $dbname.${collectionArray[$i]}.csv; 
done 

IFS=$OIFS; 
Questions connexes