2011-07-21 14 views
97

Wyeksportowałem bazę danych na serwerze przy użyciu polecenia mongodump, a zrzut jest przechowywany w pliku .bson. Muszę zaimportować to na moim lokalnym serwerze za pomocą polecenia mongorestore. Jednak to nie działa. Co to jest poprawna komenda mongorestore i jaka jest inna tools to restore db?Jak importować plik .bson na mongodb

Odpowiedz

55

to narzędzie do importowania plików bsonowych, które zostały zrzucone przez mongodump.

Z docs:

mongorestore takes the output from mongodump and restores it.

Przykład:

# 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 [email protected]:~/dump/**/* ./ 
mongorestore -h 127.0.0.1 -d my-db 
+0

Do I potrzebujesz zachować strukturę folderów 'dump/dbName/collectionName.bson'? Użyłem 'mongodump', ale teraz chcę zaimportować go za pomocą' mongorestore' na zdalnym Linux-ie. –

+0

@Kevin: Nie jestem pewien, szczerze mówiąc, ale zakładam, że tak. Użyj programu FTP, aby przesłać pliki wraz ze strukturą folderów? – Cameron

+4

Udało mi się pomyślnie zaimportować mongo db przy użyciu nazwy folderu "dump": 'mongorestore - kolekcja osób --db accounts myDump/accounts/people.bson' –

26
bsondump collection.bson > collection.json 

i

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

Uwaga ostrzeżenie z MongoDB [dokumentacja import-eksport] (http://docs.mongodb.org/manual/core/import-export/): 'mongoimport i mongoexport nie zachowują niezawodnie wszystkich bogatych typów danych BSON, ponieważ JSON może reprezentować tylko podzbiór typów obsługiwanych przez BSON. W rezultacie dane wyeksportowane lub zaimportowane za pomocą tych narzędzi mogą utracić pewną wierność. " – LucasB

+1

Dude I love you lol – Offboard

183

Jest bardzo prosty do importowania .bson file:

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

Okrywać tylko na jednej kolekcji .Try to:

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

Dla przywrócenia pełny folder eksportowany przez mongodump:

mongorestore -d db_name path/ 
+3

Przydaje się również do pliku bson eksportowanego przez' mongoexport', jeśli eksportujesz tylko pojedyncze kolekcje. 'mongoimport' dawał mi" nieprawidłowe znaki ". Dzięki! – divillysausages

+1

SyntaxError: missing; before statement @ (shell): 1: 16 – 151291

+0

Możesz dodać, że te polecenia mają być uruchamiane z wiersza poleceń, a nie z konsoli mongo. Pomogłoby to nowym użytkownikom. – Tarun

6

Musisz uruchomić ten Polecenie mongorestore przez cmd, a nie na Mongo Shell ... Spójrz na poniższe polecenie na ...

Run to polecenie cmd (nie na Mongo shell)

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

Tutaj path\to\mongorestore.exe jest ścieżka mongorestore.exe wewnątrz folderu bin MongoDB. dbname to nazwa databse. collection_name to nazwa collection.bson. path\to\same\collection.bson jest ścieżką do tej kolekcji.

Teraz z powłoki mongo można sprawdzić, czy baza danych została utworzona, czy nie (jeśli nie istnieje, baza danych o tej samej nazwie zostanie utworzona z kolekcją).

0

Użyłem tego:

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

1.Copy ścieżki i nazwa pliku z właściwościami (spróbuj umieścić wszystkie pliki bson w innym folderze), 2.Wykorzystanie to znowu i znowu ze zmianą pliku tylko nazwa.

4

Uruchom następujące polecenie z wiersza poleceń i powinieneś znajdować się w katalogu bin Mongo.

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

0

Jeśli dostęp zdalny można zrobić to

dla bson:

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

dla bson sprężonego w .gz (gzip) Format:

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" 
Powiązane problemy