Jak zaimportować plik w formacie .bson na mongodb

162

Wyeksportowałem bazę danych na serwerze za pomocą mongodumppolecenia, a zrzut jest przechowywany w .bsonpliku. Muszę zaimportować to na mój lokalny serwer za pomocą mongorestorepolecenia. Jednak to nie działa. Jakie jest poprawne mongorestorepolecenie, a jakie inne tools to restore db?

binalay
źródło

Odpowiedzi:

342

Importowanie pliku .bson jest bardzo proste :

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

Incase tylko dla jednej kolekcji. Spróbuj tego:

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

Aby przywrócić cały folder wyeksportowany przez mongodump:

mongorestore -d db_name /path/
NOCNIK
źródło
4
Przydatne również w przypadku pliku bson eksportowanego za pośrednictwem, mongoexportjeśli eksportujesz tylko pojedyncze zbiory. mongoimportdawał mi błędy „nieprawidłowy znak”. Dzięki!
divillysausages
4
SyntaxError: missing; przed instrukcją @ (powłoka):
1:16
3
Może możesz dodać, że te polecenia mają być uruchamiane z wiersza poleceń, a nie z konsoli mongo. To pomogłoby nowym użytkownikom
Dreams,
2
Dodając do tej odpowiedzi. Dla tych, którzy chcą zdalnie przywrócić plik bson. Mongorestore -h [host] -u [user] -p [pass] -d [database] -c [collection] [bson file]
Jpepper
1
Dzięki pracował dla mojego kompletnego katalogu po extrackting z tar.gz
BRAHAM Dev Yadav
63

mongorestorejest narzędziem używanym do importowania plików bson zrzuconych przez mongodump.

Z dokumentów :

mongorestore pobiera dane wyjściowe z mongodump i przywraca je.

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 user@server:~/dump/**/* ./
mongorestore -h 127.0.0.1 -d my-db
Cameron
źródło
Czy muszę zachować dump/dbName/collectionName.bsonstrukturę folderów? Kiedyś mongodump, ale teraz chcę go zaimportować, używając mongorestorena zdalnym Linuksie.
Kevin Meredith
@Kevin: Nie jestem pewien, szczerze mówiąc, ale tak przypuszczam. Czy użyć programu FTP do przesłania plików wraz ze strukturą folderów?
Cameron
5
Udało mi się pomyślnie zaimportować bazę danych mongo przy użyciu nazwy folderu innej niż „dump”:mongorestore --collection people --db accounts myDump/accounts/people.bson
Kevin Meredith
35
bsondump collection.bson > collection.json

i wtedy

mongoimport -d <dbname> -c <collection> < collection.json
Anton Shutik
źródło
7
Zwróć uwagę na ostrzeżenie z dokumentacji importu i eksportu 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
Tak. Spowoduje to pomieszanie znaków chińskich / japońskich.
user2619824
10

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

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

puneet goyal
źródło
9

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

Uruchom to polecenie w cmd (nie w powłoce Mongo)

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

Oto path\to\mongorestore.exeścieżka do mongorestore.exewewnętrznego folderu bin pliku mongodb. nazwa_bazy to nazwa bazy danych. collection_nameto nazwa kolekcji.bson. path\to\same\collection.bsonjest ścieżką do tej kolekcji.

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

Patrząc w przyszłość
źródło
4

Tylko w celach informacyjnych, jeśli ktoś nadal boryka się z mongorestore.

Musisz uruchomić monogorestore w terminalu / wierszu poleceń, a nie w konsoli mongo.

$ mongorestore -d db_name /path_to_mongo_dump/

Więcej informacji można znaleźć w oficjalnej dokumentacji

https://docs.mongodb.com/manual/reference/program/mongorestore/

Lalit Sharma
źródło
2

Jeśli masz dostęp zdalny, możesz to zrobić

dla bson:

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

bson skompresowany w formacie .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"
InLaw
źródło
1

mongorestore -d nazwa_db / ścieżka /

upewnij się, że uruchomiłeś to zapytanie w folderze bin mongoDb

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

następnie uruchom powyższe polecenie.

Jitendra Chandwani
źródło
0

Użyłem tego:

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

1. skopiuj ścieżkę do pliku i nazwę pliku z właściwości (spróbuj umieścić wszystkie pliki bson w innym folderze), 2. użyj tego wielokrotnie, zmieniając tylko nazwę pliku.

Rochan
źródło