Quando usi MongoDB, puoi usare mongoimport
per importare documenti in una raccolta. mongoimport
è un'utilità della riga di comando che importa il contenuto da un file JSON, CSV o TSV esteso. Il file di importazione potrebbe essere stato creato da mongoexport
o qualche altra utilità di esportazione.
Questo articolo presenta esempi di importazione di un file CSV in MongoDB.
Esempio
Supponiamo di avere il seguente file CSV chiamato pets.csv
:
_id,name,type 1,"Wag","Dog" 2,"Bark","Dog" 3,"Meow","Cat"
Il comando seguente importa il file CSV in MongoDB:
mongoimport --db=PetHotel --type=csv --headerline --file=pets.csv
In questo caso, non ho specificato una raccolta in cui importarlo, quindi ha creato una raccolta con lo stesso nome del file (pets
).
Controlla i risultati
Diamo un'occhiata alla collezione.
db.pets.find()
Risultato:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" } { "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" }
Possiamo vedere che i documenti sono stati importati come previsto.
File CSV senza intestazioni di colonna
Nell'esempio precedente, abbiamo utilizzato --headerline
parametro per specificare che la prima riga deve essere utilizzata per i nomi dei campi.
Se il tuo file CSV non contiene una riga di intestazione, dovrai utilizzare i campi --fields
parametro o il --fieldFile
parametro per specificare i nomi dei campi.
Quindi, immagina che il nostro file CSV non avesse la riga della colonna e fosse invece simile a questo:
1,"Wag","Dog" 2,"Bark","Dog" 3,"Meow","Cat"
Potremmo quindi utilizzare il seguente comando per importare il file:
mongoimport --db=PetHotel --type=csv --fields=_id,name,type --file=pets.csv
Questo ha lo stesso risultato dell'esempio precedente.
Specifica il nome della raccolta
Puoi usare il --collection
(o -c
) per specificare una raccolta in cui importare il file.
Ecco un esempio di utilizzo di --collection
parametro per importare lo stesso file in una raccolta diversa:
mongoimport --db=PetHotel --collection=pets2 --type=csv --fields=_id,name,type --file=pets.csv
Se la raccolta non esiste già, verrà creata. Se esiste già, il risultato dell'importazione dipenderà dalla modalità che stai utilizzando (ne parleremo più avanti).
Nel nostro caso, ecco come appare la collezione appena creata:
db.pets2.find()
Risultato:
{ "_id" : 2, "name" : "Bark", "type" : "Dog" } { "_id" : 3, "name" : "Meow", "type" : "Cat" } { "_id" : 1, "name" : "Wag", "type" : "Dog" }
Elimina la raccolta prima dell'importazione
Puoi usare il --drop
parametro per eliminare qualsiasi raccolta esistente con lo stesso nome di quella che stai tentando di creare/importare.
Immagina di avere un secondo file, chiamato pets2.csv
, con il seguente documento:
_id,name,type,weight 4,"Bubbles","Fish",3
Ecco cosa succede se importo quel documento in pets2
raccolta utilizzando il --drop
opzione:
mongoimport --db=PetHotel --collection=pets2 --type=csv --headerline --drop --file=pets2.csv
Uscita:
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.
Questo ci dice che la raccolta è stata eliminata ed è stato importato un documento.
Diamo un'occhiata alla collezione:
db.pets2.find()
Risultato:
{ "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 }
Come previsto, il nostro nuovo documento è l'unico nella raccolta.
Modalità di importazione
Ci sono varie modalità di importazione che puoi usare con mongoimport
. Queste modalità determinano cosa succede se nella raccolta sono già presenti documenti corrispondenti in cui stai tentando di importare.
Le modalità sono le seguenti:
Modalità | Descrizione |
---|---|
insert | Questa è la modalità predefinita. Questa modalità inserisce i documenti dal file di importazione. Se esiste già un documento corrispondente nella raccolta, si verifica un errore. Un documento corrispondente è uno che ha lo stesso ID univoco (come un _id corrispondente campo) come documento nel file di importazione. |
upsert | Sostituisce i documenti esistenti nel database con i documenti corrispondenti dal file di importazione. Tutti gli altri documenti vengono inseriti. |
merge | Unisce i documenti esistenti che corrispondono a un documento nel file di importazione con il nuovo documento. Tutti gli altri documenti vengono inseriti. |
delete | Elimina i documenti esistenti nel database che corrispondono a un documento nel file di importazione. Eventuali documenti non corrispondenti non hanno effetto. |
Vedi Le modalità di importazione di mongoimport
per esempi di ciascuna modalità.
Cerca mongoimport
mongoimport
fa parte del pacchetto MongoDB Database Tools. I MongoDB Database Tools sono una suite di utilità da riga di comando per lavorare con MongoDB.
Se non sei sicuro di avere MongoDB Database Tools/mongoimport
installato, prova a eseguire il seguente comando nel terminale o nel prompt dei comandi per verificare:
mongoimport --version
Se ce l'hai, dovresti vedere le informazioni sulla versione, ecc. Se non ce l'hai, puoi usare le istruzioni di installazione sul sito Web di MongoDB per installarlo sul tuo sistema.
Dove eseguire mongoimport
Comandi?
Devi eseguire mongoimport
comandi dalla riga di comando del sistema (ad es. una nuova finestra del terminale o del prompt dei comandi).
Non eseguirli da mongo
guscio.