sql >> Database >  >> NoSQL >> MongoDB

Importeer een CSV-bestand in MongoDB met mongoimport

Wanneer u MongoDB gebruikt, kunt u mongoimport . gebruiken om documenten in een collectie te importeren. mongoimport is een opdrachtregelprogramma dat inhoud importeert uit een uitgebreid JSON-, CSV- of TSV-bestand. Het importbestand kan zijn gemaakt door mongoexport of een ander exporthulpprogramma.

Dit artikel geeft voorbeelden van het importeren van een CSV-bestand in MongoDB.

Voorbeeld

Stel dat we het volgende CSV-bestand hebben met de naam pets.csv :

_id,name,type
1,"Wag","Dog"
2,"Bark","Dog"
3,"Meow","Cat"

De volgende opdracht importeert het CSV-bestand in MongoDB:

mongoimport --db=PetHotel --type=csv --headerline --file=pets.csv

In dit geval heb ik geen verzameling gespecificeerd om het in te importeren, dus heeft het een verzameling gemaakt met dezelfde naam als het bestand (pets ).

Controleer de resultaten

Laten we de collectie eens bekijken.

db.pets.find()

Resultaat:

{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

We kunnen zien dat de documenten zijn geïmporteerd zoals verwacht.

CSV-bestanden zonder kolomkoppen

In het vorige voorbeeld gebruikten we de --headerline parameter om aan te geven dat de eerste regel moet worden gebruikt voor de veldnamen.

Als uw CSV-bestand geen kopregel bevat, moet u de --fields gebruiken parameter of de --fieldFile parameter om de veldnamen op te geven.

Stel je voor dat ons CSV-bestand de kolomregel niet had en er in plaats daarvan zo uitzag:

1,"Wag","Dog"
2,"Bark","Dog"
3,"Meow","Cat"

We kunnen dan het volgende commando gebruiken om het bestand te importeren:

mongoimport --db=PetHotel --type=csv --fields=_id,name,type --file=pets.csv

Dat heeft hetzelfde resultaat als het vorige voorbeeld.

Geef de collectienaam op

U kunt de --collection . gebruiken (of -c ) parameter om een ​​verzameling op te geven waarin het bestand moet worden geïmporteerd.

Hier is een voorbeeld van het gebruik van de --collection parameter om hetzelfde bestand in een andere verzameling te importeren:

mongoimport --db=PetHotel --collection=pets2 --type=csv --fields=_id,name,type --file=pets.csv

Als de collectie nog niet bestaat, wordt deze gemaakt. Als het al bestaat, hangt het importresultaat af van de modus die u gebruikt (hierover later meer).

In ons geval ziet de nieuw gemaakte collectie er als volgt uit:

db.pets2.find()

Resultaat:

{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }
{ "_id" : 1, "name" : "Wag", "type" : "Dog" }

Laat de verzameling vallen voordat u deze importeert

U kunt de --drop . gebruiken parameter om een ​​bestaande verzameling te verwijderen met dezelfde naam als degene die u probeert te maken/importeren.

Stel je voor dat we een tweede bestand hebben, genaamd pets2.csv , met het volgende document:

_id,name,type,weight
4,"Bubbles","Fish",3

Dit is wat er gebeurt als ik dat document importeer naar de pets2 verzameling met behulp van de --drop optie:

mongoimport --db=PetHotel --collection=pets2 --type=csv --headerline --drop --file=pets2.csv

Uitgang:

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.

Dit vertelt ons dat de verzameling is verwijderd en dat één document is geïmporteerd.

Laten we de collectie eens bekijken:

db.pets2.find()

Resultaat:

{ "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 }

Zoals verwacht is ons nieuwe document het enige in de collectie.

Importmodi

Er zijn verschillende importmodi die u kunt gebruiken met mongoimport . Deze modi bepalen wat er gebeurt als er al overeenkomende documenten zijn in de collectie waarin u probeert te importeren.

De modi zijn als volgt:

Modus Beschrijving
insert Dit is de standaardmodus. In deze modus worden de documenten uit het importbestand ingevoegd. Als er al een overeenkomend document in de collectie bestaat, treedt er een fout op. Een overeenkomend document is een document met dezelfde unieke ID (zoals een overeenkomende _id veld) als een document in het importbestand.
upsert Vervangt bestaande documenten in de database door overeenkomende documenten uit het importbestand. Alle andere documenten worden ingevoegd.
merge Samenvoegen bestaande documenten die overeenkomen met een document in het importbestand met het nieuwe document. Alle andere documenten worden ingevoegd.
delete Verwijdert bestaande documenten in de database die overeenkomen met een document in het importbestand. Alle niet-overeenkomende documenten hebben geen effect.

Zie de importmodi van mongoimport voor voorbeelden van elke modus.

Controleer op mongoimport

mongoimport maakt deel uit van het MongoDB Database Tools-pakket. De MongoDB Database Tools zijn een reeks opdrachtregelhulpprogramma's voor het werken met MongoDB.

Als u niet zeker weet of u over de MongoDB Database Tools/mongoimport beschikt geïnstalleerd, probeer dan het volgende commando in je Terminal of Command Prompt uit te voeren om te controleren:

mongoimport --version

Als je het hebt, zou je versie-informatie, enz. moeten zien. Als je het niet hebt, kun je de installatie-instructies op de MongoDB-website gebruiken om het op je systeem te installeren.

Waar kunt u mongoimport uitvoeren Commando's?

U moet mongoimport . uitvoeren opdrachten vanaf de opdrachtregel van uw systeem (bijvoorbeeld een nieuw Terminal- of opdrachtpromptvenster).

Voer ze niet uit vanuit de mongo schelp.


  1. MongoDB $ronde

  2. Waarom zijn de prestaties van Redis SET beter dan GET?

  3. MongoDB Volledige en gedeeltelijke tekstzoekopdracht

  4. Mongoose Probeert een niet-gesloten verbinding te openen