Wenn Sie MongoDB verwenden, können Sie mongoimport
verwenden um Dokumente in eine Sammlung zu importieren. mongoimport
ist ein Befehlszeilendienstprogramm, das Inhalte aus einer erweiterten JSON-, CSV- oder TSV-Datei importiert. Die Importdatei könnte von mongoexport
erstellt worden sein oder ein anderes Exportdienstprogramm.
Dieser Artikel enthält Beispiele für den Import einer CSV-Datei in MongoDB.
Beispiel
Angenommen, wir haben die folgende CSV-Datei namens pets.csv
:
_id,name,type 1,"Wag","Dog" 2,"Bark","Dog" 3,"Meow","Cat"
Der folgende Befehl importiert die CSV-Datei in MongoDB:
mongoimport --db=PetHotel --type=csv --headerline --file=pets.csv
In diesem Fall habe ich keine Sammlung angegeben, in die es importiert werden soll, also wurde eine Sammlung mit demselben Namen wie die Datei erstellt (pets
).
Überprüfen Sie die Ergebnisse
Werfen wir einen Blick auf die Sammlung.
db.pets.find()
Ergebnis:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
Wir können sehen, dass die Dokumente wie erwartet importiert wurden.
CSV-Dateien ohne Spaltenüberschriften
Im vorherigen Beispiel haben wir --headerline
verwendet -Parameter, um anzugeben, dass die erste Zeile für die Feldnamen verwendet werden soll.
Wenn Ihre CSV-Datei keine Kopfzeile enthält, müssen Sie eines der --fields
verwenden Parameter oder der --fieldFile
Parameter zur Angabe der Feldnamen.
Stellen Sie sich also vor, unsere CSV-Datei hätte keine Spaltenzeile und würde stattdessen so aussehen:
1,"Wag","Dog" 2,"Bark","Dog" 3,"Meow","Cat"
Wir könnten dann den folgenden Befehl verwenden, um die Datei zu importieren:
mongoimport --db=PetHotel --type=csv --fields=_id,name,type --file=pets.csv
Das hat das gleiche Ergebnis wie das vorherige Beispiel.
Geben Sie den Sammlungsnamen an
Sie können die --collection
verwenden (oder -c
) Parameter, um eine Sammlung anzugeben, in die die Datei importiert werden soll.
Hier ist ein Beispiel für die Verwendung von --collection
Parameter, um dieselbe Datei in eine andere Sammlung zu importieren:
mongoimport --db=PetHotel --collection=pets2 --type=csv --fields=_id,name,type --file=pets.csv
Wenn die Sammlung noch nicht existiert, wird sie erstellt. Wenn es bereits existiert, hängt das Ergebnis des Imports von dem Modus ab, den Sie verwenden (mehr dazu später).
In unserem Fall sieht die neu erstellte Sammlung so aus:
db.pets2.find()
Ergebnis:
{ "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : 1, "name" : "Wag", "type" : "Dog" }
Löschen Sie die Sammlung vor dem Importieren
Sie können den --drop
verwenden -Parameter, um jede vorhandene Sammlung mit demselben Namen wie diejenige, die Sie erstellen/importieren möchten, zu löschen.
Stellen Sie sich vor, wir haben eine zweite Datei namens pets2.csv
, mit folgendem Dokument:
_id,name,type,weight 4,"Bubbles","Fish",3
Folgendes passiert, wenn ich dieses Dokument in pets2
importiere Sammlung mit --drop
Möglichkeit:
mongoimport --db=PetHotel --collection=pets2 --type=csv --headerline --drop --file=pets2.csv
Ausgabe:
2021-01-03T15:05:40.281+1000 connected to: mongodb://localhost/ 2021-01-03T15:05:40.284+1000 dropping: PetHotel.pets2 2021-01-03T15:05:40.336+1000 1 document(s) imported successfully. 0 document(s) failed to import.
Dies sagt uns, dass die Sammlung gelöscht und ein Dokument importiert wurde.
Werfen wir einen Blick auf die Sammlung:
db.pets2.find()
Ergebnis:
{ "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 }
Wie erwartet ist unser neues Dokument das einzige in der Sammlung.
Importmodi
Es gibt verschiedene Importmodi, die Sie mit mongoimport
verwenden können . Diese Modi bestimmen, was passiert, wenn es bereits übereinstimmende Dokumente in der Sammlung gibt, in die Sie zu importieren versuchen.
Die Modi sind wie folgt:
Modus | Beschreibung |
---|---|
insert | Dies ist der Standardmodus. Dieser Modus fügt die Dokumente aus der Importdatei ein. Wenn bereits ein übereinstimmendes Dokument in der Sammlung vorhanden ist, tritt ein Fehler auf. Ein übereinstimmendes Dokument ist eines, das dieselbe eindeutige ID hat (z. B. eine übereinstimmende _id Feld) als Dokument in der Importdatei. |
upsert | Ersetzt vorhandene Dokumente in der Datenbank durch passende Dokumente aus der Importdatei. Alle anderen Dokumente werden eingefügt. |
merge | Führt vorhandene Dokumente, die mit einem Dokument in der Importdatei übereinstimmen, mit dem neuen Dokument zusammen. Alle anderen Dokumente werden eingefügt. |
delete | Löscht vorhandene Dokumente in der Datenbank, die mit einem Dokument in der Importdatei übereinstimmen. Alle nicht übereinstimmenden Dokumente haben keine Auswirkung. |
Siehe Die Importmodi von mongoimport
Beispiele für jeden Modus.
Suchen Sie nach mongoimport
mongoimport
ist Teil des MongoDB Database Tools-Pakets. Die MongoDB-Datenbanktools sind eine Reihe von Befehlszeilendienstprogrammen für die Arbeit mit MongoDB.
Wenn Sie sich nicht sicher sind, ob Sie die MongoDB Database Tools/mongoimport
installiert haben, versuchen Sie, den folgenden Befehl in Ihrem Terminal oder Ihrer Eingabeaufforderung auszuführen, um dies zu überprüfen:
mongoimport --version
Wenn Sie es haben, sollten Sie Versionsinformationen usw. sehen. Wenn Sie es nicht haben, können Sie die Installationsanweisungen auf der MongoDB-Website verwenden, um es auf Ihrem System zu installieren.
Wo soll mongoimport
ausgeführt werden Befehle?
Sie müssen mongoimport
ausführen Befehle über die Befehlszeile Ihres Systems (z. B. ein neues Terminal- oder Eingabeaufforderungsfenster).
Führen Sie sie nicht vom mongo
aus Hülse.