401 votes

Comment exporter tous les collection mongodb?

Je veux exporter tous les collection mongodb par la commande: mongoexport -d dbname -o mongo.json

Le résultat est: Pas de collecte indiqué!

Le manuel de dire, si vous ne spécifiez pas un , toutes les collections seront exportés. Comment jamais, pourquoi cela ne peut pas faire le travail?

http://docs.mongodb.org/manual/reference/mongoexport/#cmdoption-mongoexport--collection

Mon mongodb version 2.0.6

814voto

Mentor Reka Points 1011

Pour les paresseux comme moi, j'ai utilisé mongodump c'est plus rapide:

mongodump -d <our database name> -o <directory_backup>

Et de "restauration/import" que j'ai utilisé (à partir de directory_backup/dump/):

mongorestore <our database name>

Avec cette solution, vous n'avez pas besoin de chacun toutes les collections et de l'exportation, un par un. Il suffit de spécifier la base de données. Je déconseille l'utilisation de mongodump/mongorestore pour le big data stockages. Il est très lent et une fois que vous avez passé 10/20 GO de données, il peut prendre des heures à restaurer.

71voto

Boris Pavlovic Points 539

J'ai écrit des scripts bash pour que. Il suffit de lancer avec 2 paramètres (nom de base de données, dir pour stocker des fichiers).

#!/bin/bash

if [ ! $1 ]; then
        echo " Example of use: $0 database_name [dir_to_store]"
        exit 1
fi
db=$1
out_dir=$2
if [ ! $out_dir ]; then
        out_dir="./"
else
        mkdir -p $out_dir
fi

tmp_file="fadlfhsdofheinwvw.js"
echo "print('_ ' + db.getCollectionNames())" > $tmp_file
cols=`mongo $db $tmp_file | grep '_' | awk '{print $2}' | tr ',' ' '`
for c in $cols
do
    mongoexport -d $db -c $c -o "$out_dir/exp_${db}_${c}.json"
done
rm $tmp_file

10voto

mark Points 7622

Si vous êtes OK avec le bfils format, vous pouvez utiliser le mongodump utilitaire avec le même drapeau-d. Il va vider toutes les collections à la décharge de répertoire (par défaut, qui peut être changé via l'option-o) dans le bfils format. Vous pouvez ensuite importer ces fichiers à l'aide de la mongorestore utilitaire.

9voto

KailuoWang Points 229

Vous pouvez utiliser mongo --eval 'printjson(db.getCollectionNames())' pour obtenir la liste des collections et puis faire un mongoexport sur chacun d'eux. Voici un exemple en ruby

  out = `mongo  #{DB_HOST}/#{DB_NAME} --eval "printjson(db.getCollectionNames())"`

  collections = out.scan(/\".+\"/).map { |s| s.gsub('"', '') }

  collections.each do |collection|
    system "mongoexport --db #{DB_NAME}  --collection #{collection}  --host '#{DB_HOST}' --out #{collection}_dump"
  end

8voto

adamb0mb Points 391

J'avais besoin de la Windows script batch version. Ce fil a été utile, j'ai donc pensé que je pourrais apporter ma réponse.

mongo "{YOUR SERVER}/{YOUR DATABASE}" --eval "rs.slaveOk();db.getCollectionNames()" --quiet>__collections.txt
for /f %%a in ('type __collections.txt') do @set COLLECTIONS=%%a
for %%a in (%COLLECTIONS%) do mongoexport --host {YOUR SERVER} --db {YOUR DATABASE} --collection %%a --out data\%%a.json
del __collections.txt

J'ai eu quelques problèmes à l'aide d' set /p COLLECTIONS=<__collections.txt, d'où l'enchevêtrement for /f méthode.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X