MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Importieren Sie eine CSV-Datei mit mongoimport in MongoDB

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.