Comment importer le format de fichier .bson sur mongodb


163

J'ai exporté la base de données sur le serveur à l'aide de la mongodumpcommande et le vidage est stocké dans un .bsonfichier. Je dois importer cela dans mon serveur local à l'aide de la mongorestorecommande. Cependant, cela ne fonctionne pas. Quelle est la mongorestorecommande correcte et quelles sont les autres tools to restore db?

Réponses:


342

C'est très simple d'importer un fichier .bson :

mongorestore -d db_name -c collection_name /path/file.bson

Incase uniquement pour une seule collection. Essayez ceci:

mongorestore --drop -d db_name -c collection_name /path/file.bson

Pour restaurer le dossier complet exporté par mongodump:

mongorestore -d db_name /path/

4
Également utile pour le fichier bson exporté via mongoexportsi vous n'exportez que des collections uniques. mongoimportme donnait des erreurs de "caractère invalide". Merci!
divillysausages

4
SyntaxError: manquant; avant la déclaration @ (shell): 1: 16
151291

3
Vous pouvez peut-être ajouter que ces commandes doivent être exécutées à partir de l'invite de commande et non de la console mongo. Cela aiderait les nouveaux utilisateurs
Dreams

2
Ajout à cette réponse. Pour ceux qui souhaitent restaurer à distance un fichier bson. Mongorestore -h [host] -u [user] -p [pass] -d [database] -c [collection] [bson file]
Jpepper

1
Merci, cela a fonctionné pour mon dossier complet après l'extraction de tar.gz
Braham Dev Yadav

64

mongorestoreest l'outil à utiliser pour importer les fichiers bson qui ont été vidés par mongodump.

À partir de la documentation :

mongorestore prend la sortie de mongodump et la restaure.

Exemple:

# On the server run dump, it will create 2 files per collection
# in ./dump directory:
# ./dump/my-collection.bson
# ./dump/my-collection.metadata.json
mongodump -h 127.0.0.1 -d my-db -c my-collection

# Locally, copy this structure and run restore.
# All collections from ./dump directory are picked up.
scp user@server:~/dump/**/* ./
mongorestore -h 127.0.0.1 -d my-db

Dois-je conserver la dump/dbName/collectionName.bsonstructure des dossiers? J'ai utilisé mongodump, mais maintenant je veux l'importer en utilisant mongorestoresur une machine Linux distante.
Kevin Meredith

@Kevin: Je ne suis pas sûr, pour être honnête, mais je suppose que oui. Utilisez un programme FTP pour transférer les fichiers avec la structure des dossiers?
Cameron

5
J'ai réussi à importer une base de données mongo en utilisant un nom de dossier non "dump":mongorestore --collection people --db accounts myDump/accounts/people.bson
Kevin Meredith

35
bsondump collection.bson > collection.json

puis

mongoimport -d <dbname> -c <collection> < collection.json

7
Notez l'avertissement de la documentation d'import-export de MongoDB :mongoimport and mongoexport do not reliably preserve all rich BSON data types because JSON can only represent a subset of the types supported by BSON. As a result, data exported or imported with these tools may lose some measure of fidelity.
LucasB

Oui. Cela gâche les caractères chinois / japonais.
user2619824 le

10

Exécutez ce qui suit à partir de la ligne de commande et vous devriez être dans le répertoire bin Mongo.

mongorestore -d db_name -c collection_name path/file.bson


9

Vous devez exécuter cette commande mongorestore via cmd et non sur Mongo Shell ... Jetez un œil à la commande ci-dessous sur ...

Exécutez cette commande sur cmd (pas sur le shell Mongo)

>path\to\mongorestore.exe -d dbname -c collection_name path\to\same\collection.bson

Voici le path\to\mongorestore.exechemin du mongorestore.exedossier bin intérieur de mongodb. dbname est le nom de la base de données. collection_nameest le nom de collection.bson. path\to\same\collection.bsonest le chemin menant à cette collection.

Maintenant, à partir de mongo shell, vous pouvez vérifier que la base de données est créée ou non (si elle n'existe pas, la base de données du même nom sera créée avec la collection).



2

Si votre accès à distance, vous pouvez le faire

pour bson:

mongorestore --host m2.mongodb.net --port 27016 --ssl --username $user --password $password --authenticationDatabase $authdb -d test -c people "/home/${USER}/people.bson"

pour bson compressé au format .gz (gzip):

mongorestore --host m2.mongodb.net --port 27016 --ssl --username $user --password $password --authenticationDatabase $authdb -d test -c people --gzip --dir "/home/${USER}/people.bson.gz"

1

mongorestore -d nom_base / chemin /

assurez-vous d'exécuter cette requête dans le dossier bin de mongoDb

C: \ Program Files \ MongoDB \ Server \ 4.2 \ bin -

puis exécutez cette commande ci-dessus.


0

J'ai utilisé ceci:

mongorestore -d databasename -c file.bson fullpath/file.bson

1. copiez le chemin du fichier et le nom du fichier à partir des propriétés (essayez de mettre tous les fichiers bson dans un dossier différent), 2. utilisez-le encore et encore en changeant le nom de fichier uniquement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.