MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Importa un file CSV in MongoDB con mongoimport

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.