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

Exportieren Sie eine MongoDB-Sammlung in eine CSV-Datei

Die MongoDB-Datenbanktools enthalten ein Dienstprogramm namens mongoexport damit können Sie MongoDB-Daten in eine CSV- oder JSON-Datei exportieren.

Dieser Artikel zeigt Ihnen, wie Sie mongoexport verwenden um eine MongoDB-Sammlung in eine CSV-Datei zu exportieren.

Syntax

Die Syntax für mongoexport geht so:

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

Sie müssen mongoexport ausführen Befehle über die Befehlszeile Ihres Systems (z. B. ein neues Terminal- oder Eingabeaufforderungsfenster).

Führen Sie mongoexport nicht aus Befehle aus dem mongo Hülse.

Sammlung exportieren

Der folgende Beispielcode exportiert eine Sammlung aus MongoDB:

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

Dies exportiert eine Sammlung namens pets vom PetHotel Datenbank in eine Datei namens pets.csv in den data/ Mappe.

Wenn der Ordner nicht vorhanden ist, wird er erstellt. Das gleiche mit der Datei. Übrigens setzt dies voraus, dass es keine Berechtigungsprobleme beim Schreiben einer Datei an den angegebenen Speicherort gibt.

In diesem Beispiel habe ich keinen Host, Port, Authentifizierung usw. angegeben, daher wird die Sammlung aus der MongoDB-Instanz exportiert, die auf der standardmäßigen localhost-Portnummer 27017 ausgeführt wird .

Nachfolgend finden Sie eine Erklärung der Parameter, die wir hier angegeben haben.

Parameter Beschreibung
--db
oder
-d
Gibt die Datenbank an, die die zu exportierende Sammlung enthält. In diesem Fall heißt die Datenbank PetHotel .
Alternativ kann dieser Parameter auch mit -d übergeben werden (anstelle von --db ).
--collection
oder
-c
Gibt die Sammlung an, die wir exportieren möchten. In diesem Fall heißt die Sammlung pets .
Dieser Parameter kann alternativ als -c übergeben werden (anstelle von --collection ).
--type Gibt den exportierten Dateityp an. In diesem Fall geben wir csv an um es in eine CSV-Datei zu exportieren.
--fields Gibt die Felder an, die wir exportieren möchten. Wir haben die Möglichkeit, alle Felder in der Sammlung oder nur einige zu exportieren. Sie müssen hier alle durch ein Komma getrennt auflisten. Beim Export in CSV ist die Angabe der Feldnamen zwingend erforderlich. Das geht über die --fields Parameter oder der --fieldFile Parameter (dazu später mehr).
--out Gibt den Namen der exportierten Datei und ihren Speicherort an. Wenn Sie keinen Dateinamen angeben, mongoexport schreibt Daten auf die Standardausgabe (stdout ).

Überprüfen Sie die exportierte Datei

Lassen Sie uns überprüfen, ob der Exportvorgang wie erwartet funktioniert hat.

Sehen wir uns zunächst die ursprüngliche Sammlung an.

use PetHotel
db.pets.find()

Ergebnis:

{ "_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 }

Wir können also sehen, dass es 7 Haustiere gibt, alle mit denselben Feldern, die wir in unserem Exportvorgang angegeben haben.

Öffnen wir nun die exportierte Datei pets.csv um zu sehen, was drin ist:

_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, also befinden sich alle Daten wie erwartet in der exportierten Datei.

Spaltenüberschriften entfernen

Sie werden feststellen, dass die exportierte Datei im vorherigen Beispiel die Spaltenüberschriften enthielt.

Sie haben auch die Möglichkeit, die Datei ohne zu exportieren Spaltenüberschriften. Verwenden Sie dazu die --noHeaderLine Parameter.

Beispiel:

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

Wenn ich jetzt die exportierte Datei öffne, gibt es keine Spaltenüberschriften:

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

Verwenden Sie eine Datei für die Feldnamen

Sie können das --field ersetzen Parameter mit dem --fieldFile -Parameter, um den Namen einer Datei anzugeben, die die Feldnamen enthält, die Sie exportieren möchten.

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

Die Datei, die die Felder enthält, muss die Felder aufgelistet haben, eines pro Zeile.

Das ist die pets_fields.txt Datei sah für dieses Beispiel so aus:

_id
name
type
weight

Dies führte dazu, dass der Inhalt der exportierten Datei wie folgt aussah:

_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

Ändern der Spaltenreihenfolge

Sie können die Reihenfolge der zu exportierenden Felder ändern. Sie müssen nicht in derselben Reihenfolge wie das zugrunde liegende Dokument vorliegen.

Zum Beispiel dieser Code:

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

Ergibt die folgende CSV-Datei:

_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

Und das Folgende:

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

Ergebnisse in diesem:

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

Zugriffskontrolle/Authentifizierung

Wenn Sie localhost nicht verwenden, können Sie --host verwenden -Parameter zur Angabe des Hosts und --port um den Port anzugeben. Sie können auch den --username verwenden Parameter zur Angabe des Benutzernamens und --password für das Passwort. Wenn Sie den Kennwortparameter weglassen, werden Sie dazu aufgefordert. Es gibt auch eine --authenticationDatabase Parameter zur Angabe der Authentifizierungsdatenbank, in der der Benutzer erstellt wurde.

Beispiel:

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

Suchen Sie nach mongoexport

mongoexport ist Teil des MongoDB Database Tools-Pakets. Die MongoDB-Datenbanktools sind eine Reihe von Befehlszeilendienstprogrammen für die Arbeit mit MongoDB.

Wenn Sie nicht sicher sind, ob Sie die MongoDB Database Tools/mongoexport haben installiert haben, versuchen Sie, den folgenden Befehl in Ihrem Terminal oder in der Eingabeaufforderung auszuführen, um dies zu überprüfen:

mongoexport --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 sollen die Befehle ausgeführt werden?

Vergessen Sie nicht, dass Sie mongoexport ausführen müssen Befehle über die Befehlszeile Ihres Systems (z. B. ein neues Terminal- oder Eingabeaufforderungsfenster).

Führen Sie sie nicht vom mongo aus Hülse.