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

Esporta una raccolta MongoDB in un file CSV

Gli strumenti di database MongoDB includono un'utilità chiamata mongoexport che ti consente di esportare i dati MongoDB in un file CSV o JSON.

Questo articolo mostra come utilizzare mongoexport per esportare una raccolta MongoDB in un file CSV.

Sintassi

La sintassi per mongoexport va così:

mongoexport --collection=<coll> <options> <connection-string>

Devi eseguire mongoexport comandi dalla riga di comando del sistema (ad es. una nuova finestra del terminale o del prompt dei comandi).

Non eseguire mongoexport comandi dal mongo guscio.

Esportare una raccolta

Il codice di esempio seguente esporta una raccolta da MongoDB:

mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --out=data/pets.csv

Questo esporta una raccolta chiamata pets dal PetHotel database in un file chiamato pets.csv nei data/ cartella.

Se la cartella non esiste, viene creata. Lo stesso con il file. A proposito, questo presuppone che non ci siano problemi di autorizzazione con la scrittura di un file nella posizione specificata.

In questo esempio non ho specificato alcun host, porta, autenticazione, ecc, quindi esporta la raccolta dall'istanza MongoDB in esecuzione sul numero di porta localhost predefinito 27017 .

Di seguito è riportata una spiegazione dei parametri che abbiamo fornito qui.

Parametro Descrizione
--db
o
-d
Specifica il database che contiene la raccolta che vogliamo esportare. In questo caso, il database si chiama PetHotel .
Questo parametro può essere passato in alternativa usando -d (invece di --db ).
--collection
o
-c
Specifica la raccolta che vogliamo esportare. In questo caso, la collezione si chiama pets .
Questo parametro può in alternativa essere passato come -c (invece di --collection ).
--type Specifica il tipo di file esportato. In questo caso specifichiamo csv per esportarlo in un file CSV.
--fields Specifica i campi che vogliamo esportare. Abbiamo la possibilità di esportare tutti i campi della raccolta o solo alcuni. Devi elencarli tutti qui, separati da una virgola. Quando si esporta in CSV, è necessario specificare i nomi dei campi. Puoi farlo tramite i --fields parametro o il --fieldFile parametro (ne parleremo più avanti).
--out Specifica il nome del file esportato e la posizione in cui verrà posizionato. Se non specifichi un nome file, mongoexport scrive i dati nello standard output (stdout ).

Controlla il file esportato

Verifichiamo che l'operazione di esportazione abbia funzionato come previsto.

Per prima cosa, controlliamo la collezione originale.

use PetHotel
db.pets.find()

Risultato:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

Quindi possiamo vedere che ci sono 7 animali domestici, tutti con gli stessi campi che abbiamo specificato nella nostra operazione di esportazione.

Ora apriamo il file esportato pets.csv per vedere cosa c'è dentro:

_id,name,type,weight
1,Wag,Dog,20
2,Bark,Dog,10
3,Meow,Cat,7
4,Scratch,Cat,8
5,Bruce,Bat,3
6,Fetch,Dog,17
7,Jake,Dog,30

OK, quindi tutti i dati sono nel file esportato come previsto.

Rimuovi le intestazioni delle colonne

Noterai che il file esportato nell'esempio precedente includeva le intestazioni di colonna.

Hai anche la possibilità di esportare il file senza intestazioni di colonna. Per fare ciò, usa il --noHeaderLine parametro.

Esempio:

mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --noHeaderLine --out=data/pets.csv

Ora, quando apro il file esportato, non ci sono intestazioni di colonna:

1,Wag,Dog,20
2,Bark,Dog,10
3,Meow,Cat,7
4,Scratch,Cat,8
5,Bruce,Bat,3
6,Fetch,Dog,17
7,Jake,Dog,30

Utilizzare un file per i nomi dei campi

Puoi sostituire il --field parametro con il --fieldFile parametro per specificare il nome di un file che contiene i nomi dei campi che si desidera esportare.

mongoexport --db=PetHotel --collection=pets --type=csv --fieldFile=data/pets_fields.txt --out=data/pets.csv

Il file che contiene i campi deve avere i campi elencati, uno per riga.

Ecco cosa è il pets_fields.txt il file era simile a questo esempio:

_id
name
type
weight

Ciò ha comportato che il contenuto del file esportato fosse simile a questo:

_id,name,type,weight
1,Wag,Dog,20
2,Bark,Dog,10
3,Meow,Cat,7
4,Scratch,Cat,8
5,Bruce,Bat,3
6,Fetch,Dog,17
7,Jake,Dog,30

Modifica dell'ordine delle colonne

È possibile modificare l'ordine dei campi da esportare. Non devono essere necessariamente nello stesso ordine del documento sottostante.

Ad esempio, questo codice:

mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,weight,type,name --out=data/pets.csv

Risulta nel seguente file CSV:

_id,weight,type,name
1,20,Dog,Wag
2,10,Dog,Bark
3,7,Cat,Meow
4,8,Cat,Scratch
5,3,Bat,Bruce
6,17,Dog,Fetch
7,30,Dog,Jake

E quanto segue:

mongoexport --db=PetHotel --collection=pets --type=csv --fields=type,name,weight,_id --out=data/pets.csv

Risulta in questo:

type,name,weight,_id
Dog,Wag,20,1
Dog,Bark,10,2
Cat,Meow,7,3
Cat,Scratch,8,4
Bat,Bruce,3,5
Dog,Fetch,17,6
Dog,Jake,30,7

Controllo accessi/Autenticazione

Se non stai usando localhost, puoi usare il --host parametro per specificare l'host e --port per specificare la porta. Puoi anche usare il --username parametro per specificare il nome utente e --password a per la password. Se ometti il ​​parametro password, ti verrà richiesto. C'è anche un --authenticationDatabase parametro per specificare il database di autenticazione in cui è stato creato l'utente.

Esempio:

mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --out=data/pets.csv

Cerca mongoexport

mongoexport 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/mongoexport installato, prova a eseguire il seguente comando nel terminale o nel prompt dei comandi per verificare:

mongoexport --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 i comandi?

Non dimenticare che devi eseguire mongoexport comandi dalla riga di comando del sistema (ad es. una nuova finestra del terminale o del prompt dei comandi).

Non eseguirli da mongo guscio.