@ Karoly-Horvath hat es richtig. Für csv sind Felder erforderlich.
Entsprechend diesem Fehler im MongoDB Issue Tracker https://jira.mongodb.org/browse/SERVER-4224 MÜSSEN Sie die Felder beim Exportieren in eine CSV angeben . Die Dokumente sind nicht klar. Das ist der Grund für den Fehler.
Versuche dies:
mongoexport --host localhost --db dbname --collection name --csv --out text.csv --fields firstName,middleName,lastName
AKTUALISIEREN:
Dieses Commit: https://github.com/mongodb/mongo-tools/commit/586c00ef09c32c77907bd20d722049ed23065398 behebt die Dokumente für 3.0.0-rc10 und höher. Es ändert
Fields string `long:"fields" short:"f" description:"comma separated list of field names, e.g. -f name,age"`
zu
Fields string `long:"fields" short:"f" description:"comma separated list of field names (required for exporting CSV) e.g. -f \"name,age\" "`
VERSION 3.0 UND OBEN:
Sie sollten --type=csv
anstelle von verwenden, --csv
da es veraltet ist.
Weitere Details: https://docs.mongodb.com/manual/reference/program/mongoexport/#export-in-csv-format
Voller Befehl:
mongoexport --host localhost --db dbname --collection name --type=csv --out text.csv --fields firstName,middleName,lastName
mongoexport
heißt escsv flag is deprecated; please use --type=csv instead
Außerdem dürfen keine Leerzeichen zwischen durch Kommas getrennten Feldnamen stehen.
SCHLECHT:
-f firstname, lastname
GUT:
-f firstname,lastname
quelle
Sie müssen es manuell angeben und wenn Sie darüber nachdenken, ist es absolut sinnvoll. MongoDB ist schemenlos; CSV hingegen hat ein festes Layout für Spalten. Ohne zu wissen, welche Felder in verschiedenen Dokumenten verwendet werden, kann der CSV-Speicherauszug nicht ausgegeben werden.
Wenn Sie ein festes Schema haben, können Sie möglicherweise ein Dokument abrufen, die Feldnamen mit einem Skript daraus abrufen und an mongoexport übergeben.
quelle
Wenn Sie möchten, können Sie alle Sammlungen ohne Angabe von Informationen in csv
--fields
exportieren (exportiert alle Felder).Von http://drzon.net/export-mongodb-collections-to-csv-without-specifying-fields/ diesen Bash - Skript ausführen
quelle
Ich konnte Mongoexport nicht dazu bringen, dies für mich zu tun. Ich habe festgestellt, dass Sie die gesamte Sammlung einmal durchlaufen müssen, um eine vollständige Liste aller Felder zu erhalten. Verwenden Sie diese Option, um die Header zu generieren. Durchlaufen Sie dann die Sammlung erneut, um diese Überschriften für jedes Dokument zu füllen.
Ich habe ein Skript geschrieben, um genau das zu tun. Konvertieren von MongoDB-Dokumenten in CSV unabhängig von Schemaunterschieden zwischen einzelnen Dokumenten.
https://github.com/surya-shodan/mongoexportcsv
quelle
Auch wenn Sie innere JSON-Felder exportieren möchten, verwenden Sie den Punkt (. -Operator).
JSON-Datensatz:
mongoexport-Befehl mit Punktoperator (mit mongo Version 3.4.7):
Ausgabe csv:
Hinweis: Stellen Sie sicher, dass Sie kein Array exportieren. Es würde das CSV-Format wie die oben gezeigten Feldbenutzer-IDs beschädigen
quelle
Lösung für MongoDB Atlas Benutzer!
Fügen Sie den
--fields
Parameter als durch Kommas getrennte Feldnamen hinzu, die in doppelte invertierte Anführungszeichen eingeschlossen sind:Dies ist ein vollständiges Beispiel:
quelle
Das funktioniert bei mir Probieren Sie es aus
Über cmd werden ganze Daten der Benutzersammlung zurückgegeben. Wenn Sie ein Filterfeld wünschen, fügen Sie --fields = email, name hinzu
quelle
Der folgende Befehl wird zum Exportieren der Sammlung in das CSV-Format verwendet.
Hinweis:
naag
Istemployee1_json
eine Datenbank, ist eine Sammlung.quelle
Für alle, die mit einem Fehler feststecken.
Lassen Sie mich Ihnen eine Lösung mit einer kurzen Erklärung derselben geben:
Befehl zum Verbinden: -
--host -> Host des Mongo-Servers
--port -> Port des Mongo-Servers
-u -> Benutzername
-p -> Passwort
--db -> db, aus der Sie exportieren möchten
--collection -> Sammlung, die Sie exportieren möchten
--type -> Art des Exports in meinem Fall CSV
--out -> Dateiname, in den Sie exportieren möchten
--fields -> alle Felder, die Sie exportieren möchten (bei CSV keine Leerzeichen zwischen zwei Feldnamen zwischen Kommas angeben)
--authenticationDatabase -> Datenbank, in der alle Ihre Benutzerinformationen gespeichert sind
quelle