Ich möchte alle Sammlungen in MongoDB mit dem folgenden Befehl exportieren:
mongoexport -d dbname -o Mongo.json
Das Ergebnis ist:
Keine Sammlung angegeben!
Das Handbuch besagt, dass alle Sammlungen exportiert werden, wenn Sie keine Sammlung angeben.
Warum funktioniert das jedoch nicht?
http://docs.mongodb.org/manual/reference/mongoexport/#cmdoption-mongoexport--collection
Meine MongoDB-Version ist 2.0.6.
Antworten:
Für faule Leute
mongodump
ist es schneller:Und um es "wiederherzustellen / importieren" (aus directory_backup / dump /):
Auf diese Weise müssen Sie nicht alle Sammlungen einzeln bearbeiten. Geben Sie einfach die Datenbank an.
Beachten Sie, dass ich die Verwendung von
mongodump
/mongorestore
für Big-Data-Speicher empfehlen würde . Es ist sehr langsam und sobald Sie 10 / 20GB Daten erreicht haben, kann die Wiederherstellung Stunden dauern.quelle
Ich habe dafür ein Bash-Skript geschrieben. Führen Sie es einfach mit 2 Parametern aus (Datenbankname, Verzeichnis zum Speichern von Dateien).
quelle
for file in *.json; do c=${file#*exp_yourdbname_}; c=${c%.json}; mongoimport --db yourdbname --collection "${c}" --file "${file}"; done
Führen Sie die folgenden Schritte aus, um einen Mongodump vom Server zu erstellen und einen anderen Server / lokalen Computer mit einem Benutzernamen und einem Kennwort zu importieren
quelle
Exportieren Sie alle Sammlungen mit Mongodump mit dem folgenden Befehl
mongodump -d database_name -o directory_to_store_dumps
Verwenden Sie zum Wiederherstellen diesen Befehl
quelle
mongodump -d mongo -o path\to\Desktop\blog
und ich bekomme eineSyntaxError: missing ; before statement
von der CMD. :(Bitte teilen Sie uns mit, wo Sie Ihre Mongo DB installiert haben. (entweder in Ubuntu oder in Windows)
Für Windows:
mongodump --db Datenbankname --out Pfad zum Speichern
zB: mongodump --db mydb --out c: \ TEMP \ op.json
Für Ubuntu:
mongodump -d Datenbankname -o zu speichernder Dateiname
zB: mongodump -d mydb -o output.json
quelle
Frühere Antworten haben es gut erklärt. Ich füge meine Antwort hinzu, um Ihnen zu helfen, falls Sie mit einer passwortgeschützten Remote-Datenbank arbeiten
quelle
Wenn Sie einen Remote-MongoDB-Server wie mongolab.com verbinden möchten, sollten Sie die Anmeldeinformationen für die Verbindung übergeben, z.
quelle
Wenn Sie mit dem bson-Format einverstanden sind, können Sie das Dienstprogramm mongodump mit demselben Flag -d verwenden. Alle Sammlungen werden im bson-Format in das Speicherauszugsverzeichnis (die Standardeinstellung kann über die Option -o geändert werden) ausgegeben. Sie können diese Dateien dann mit dem Dienstprogramm mongorestore importieren.
quelle
Sie können verwenden
mongo --eval 'printjson(db.getCollectionNames())'
, um die Liste der Sammlungen abzurufen und dann einen Mongoexport für alle Sammlungen durchzuführen. Hier ist ein Beispiel in Rubinquelle
out.scan(/\".+?\"/).map { |s| s.gsub('"', '') }
Ich brauchte die Windows-Batch-Skriptversion. Dieser Thread war nützlich, also dachte ich, ich würde auch meine Antwort dazu beitragen.
Ich hatte einige Probleme bei der Verwendung
set /p COLLECTIONS=<__collections.txt
, daher die verschlungenefor /f
Methode.quelle
Nachdem ich viele verschlungene Beispiele ausprobiert hatte, stellte ich fest, dass ein sehr einfacher Ansatz für mich funktionierte.
Ich wollte nur einen Speicherauszug einer Datenbank von local nehmen und auf eine Remote-Instanz importieren:
auf dem lokalen Computer:
dann habe ich meinen Dump auf meinen Server übertragen:
dann aus dem übergeordneten Verzeichnis des Dumps einfach:
und das importierte die Datenbank.
vorausgesetzt, der Mongodb-Dienst läuft natürlich.
quelle
Wenn Sie möchten, können Sie alle Sammlungen ohne Angabe von CSV
--fields
exportieren (exportiert alle Felder).Von http://drzon.net/export-mongodb-collections-to-csv-without-specifying-fields/ diesen Bash - Skript ausführen
quelle
Wenn Sie alle Sammlungen in allen Datenbanken sichern möchten (was eine weitreichende Interpretation der Absicht des ursprünglichen Fragestellers darstellt), verwenden Sie
Alle Datenbanken und Sammlungen werden in einem Verzeichnis namens "dump" am "aktuellen" Speicherort erstellt
quelle
Sie können dies mit dem Befehl mongodump tun
Exportierte Dateien werden im Ordner Zielpfad \ Ihr_Datenbankname erstellt (in diesem Beispiel C: \ Benutzer \ HP \ Desktop \ Test).
Referenzen: o7planning
quelle
Mir ist klar, dass dies eine ziemlich alte Frage ist und dass Mongodump / Mongorestore eindeutig der richtige Weg ist, wenn Sie ein 100% originalgetreues Ergebnis erzielen möchten, einschließlich Indizes.
Ich brauchte jedoch eine schnelle und schmutzige Lösung, die wahrscheinlich vorwärts- und rückwärtskompatibel zwischen alten und neuen Versionen von MongoDB ist, vorausgesetzt, es ist nichts besonders Verrücktes los. Und dafür wollte ich die Antwort auf die ursprüngliche Frage.
Es gibt andere akzeptable Lösungen, aber diese Unix-Pipeline ist relativ kurz und süß:
Dadurch wird
.json
für jede Sammlung eine entsprechend benannte Datei erstellt.Beachten Sie, dass der Datenbankname ("mydatabase") zweimal angezeigt wird. Ich gehe davon aus, dass die Datenbank lokal ist und Sie keine Anmeldeinformationen übergeben müssen, aber das ist mit beiden
mongo
und einfachmongoexport
.Beachten Sie, dass ich
grep -v
zum Verwerfen verwendesystem.indexes
, da ich nicht möchte, dass eine ältere Version von MongoDB versucht, eine Systemsammlung aus einer neueren zu interpretieren. Stattdessen erlaube ich meiner Anwendung, ihre üblichenensureIndex
Aufrufe durchzuführen, um die Indizes neu zu erstellen.quelle
Sie können eine Zip-Datei mit dem folgenden Befehl erstellen. Es wird eine Zip-Datei der bereitgestellten Datenbank {Datenbankname} erstellt. Sie können die folgende Zip-Datei später in Ihre Mongo-Datenbank importieren.
quelle
Folgendes hat bei der Wiederherstellung einer exportierten Datenbank funktioniert:
mongorestore -d 0 ./0 --drop
Dabei enthielt ./ die exportierten Bson-Dateien. Beachten Sie, dass das
--drop
vorhandene Daten überschreibt.quelle
Wenn Sie mongoexport und mongoimport verwenden möchten , um jede Sammlung aus der Datenbank zu exportieren / importieren, kann dieses Dienstprogramm für Sie hilfreich sein. Ich habe ein paar Mal ein ähnliches Dienstprogramm verwendet.
quelle
Wenn Sie alle Datenbankdatenbanken auf dem Server sichern möchten, ohne sich Sorgen machen zu müssen, dass die Datenbankdatenbanken aufgerufen werden, verwenden Sie das folgende Shell-Skript:
Hierbei wird das Dienstprogramm mongodump verwendet, mit dem alle DBs gesichert werden, wenn keine angegeben ist.
Sie können dies in Ihren Cronjob einfügen, und es wird nur ausgeführt, wenn der Mongod-Prozess ausgeführt wird. Es wird auch das Sicherungsverzeichnis erstellt, wenn keines vorhanden ist.
Jede DB-Sicherung wird in ein einzelnes Verzeichnis geschrieben, sodass Sie einzelne DBs aus dem globalen Speicherauszug wiederherstellen können.
quelle
Zunächst von Start the Mongo DB - gehen Sie dazu zum Pfad als ->
C: \ Programme \ MongoDB \ Server \ 3.2 \ bin und klicken Sie auf die Datei mongod.exe , um den MongoDB-Server zu starten.
Befehl zum Exportieren in Windows
C:> mongodump --host remote_ip_address: 27017 --db -o C: / Users / Desktop / temp-Ordner
Befehl zum Importieren in Windows
C:> mongorestore --host = ip --port = 27017 -d C: / Benutzer / Desktop / temporärer Ordner / Datenbankverzeichnis
quelle
quelle
Export:
mongo/bin> mongoexport -d webmitta -c domain -o domain-k.json
Importieren:
mongoimport -d dbname -c newCollecionname --file domain-k.json
Wo
quelle
Je nachdem, was Sie tun möchten, gibt es mehrere Optionen
1) Wenn Sie Ihre Datenbank in eine andere Mongo-Datenbank exportieren möchten, sollten Sie verwenden
mongodump
. Dadurch wird ein Ordner mit BSON-Dateien erstellt, die Metadaten enthalten, über die JSON nicht verfügen würde.2) Wenn Sie Ihre Datenbank in JSON exportieren möchten, können Sie sie verwenden, es sei
mongoexport
denn, Sie müssen jeweils eine Sammlung erstellen (dies ist beabsichtigt). Ich denke jedoch, dass es am einfachsten ist, die gesamte Datenbank mit zu exportierenmongodump
und dann in JSON zu konvertieren.quelle
Für den Speicherauszug hat Ihre Datenbank die folgende CMD
quelle
Führen Sie zum Exportieren im JSON-Format die folgenden Befehle aus.
quelle