@ karoly-horvath a raison. Les champs sont obligatoires pour csv.
Selon ce bogue dans le suivi des problèmes MongoDB https://jira.mongodb.org/browse/SERVER-4224, vous DEVEZ fournir les champs lors de l'exportation vers un csv . Les documents ne sont pas clairs à ce sujet. Telle est la raison de l'erreur.
Essaye ça:
mongoexport --host localhost --db dbname --collection name --csv --out text.csv --fields firstName,middleName,lastName
METTRE À JOUR:
Ce commit: https://github.com/mongodb/mongo-tools/commit/586c00ef09c32c77907bd20d722049ed23065398 corrige la documentation pour 3.0.0-rc10 et versions ultérieures. Ça change
Fields string `long:"fields" short:"f" description:"comma separated list of field names, e.g. -f name,age"`
à
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 ET SUPÉRIEURE:
Vous devez utiliser à la --type=csv
place de --csv
car il est obsolète.
Plus de détails: https://docs.mongodb.com/manual/reference/program/mongoexport/#export-in-csv-format
Commande complète:
mongoexport --host localhost --db dbname --collection name --type=csv --out text.csv --fields firstName,middleName,lastName
mongoexport
ditcsv flag is deprecated; please use --type=csv instead
De plus, vous n'êtes pas autorisé à utiliser des espaces entre les noms de champs séparés par des virgules.
MAUVAIS:
-f firstname, lastname
BIEN:
-f firstname,lastname
la source
Vous devez le spécifier manuellement et si vous y réfléchissez, c'est parfaitement logique. MongoDB est sans schéma; CSV, en revanche, a une disposition fixe pour les colonnes. Sans savoir quels champs sont utilisés dans différents documents, il est impossible de sortir le vidage CSV.
Si vous avez un schéma fixe, vous pourriez peut-être récupérer un document, en récolter les noms de champs avec un script et le transmettre à mongoexport.
la source
Si vous le souhaitez, vous pouvez exporter toutes les collections vers csv sans spécifier
--fields
(exportera tous les champs).Depuis http://drzon.net/export-mongodb-collections-to-csv-without-specifying-fields/, exécutez ce script bash
la source
Je n'ai pas pu demander à mongoexport de faire ça à ma place. J'ai trouvé que, pour obtenir une liste exhaustive de tous les champs, vous devez parcourir une fois la collection entière. Utilisez ceci pour générer les en-têtes. Ensuite, parcourez à nouveau la collection pour remplir ces en-têtes pour chaque document.
J'ai écrit un script pour faire exactement cela. Conversion de documents MongoDB en csv indépendamment des différences de schéma entre les documents individuels.
https://github.com/surya-shodan/mongoexportcsv
la source
De plus, si vous souhaitez exporter des champs JSON internes, utilisez le point (opérateur.).
Enregistrement JSON:
Commande mongoexport avec opérateur point (utilisant mongo version 3.4.7):
Sortie csv:
Remarque: assurez-vous de ne pas exporter une matrice. Cela corromprait le format CSV comme le champ userIds indiqué ci-dessus
la source
Solution pour les utilisateurs de MongoDB Atlas!
Ajoutez le
--fields
paramètre sous forme de noms de champs séparés par des virgules entre guillemets inversés doubles:Ceci est un exemple complet:
la source
Cela fonctionne pour moi Essayez-le
Au-dessus de cmd, retournez toutes les données de la collection des utilisateurs si vous voulez un champ de filtre, puis ajoutez --fields = email, nom
la source
fonctionne pour moi à distance vers un conteneur docker avec mongo: 4.2.6
la source
Pour tous ceux qui sont coincés avec une erreur.
Permettez-moi de vous donner une solution avec une brève explication de la même chose: -
commande pour se connecter: -
--host -> hôte du serveur Mongo
--port -> port du serveur Mongo
-u -> nom d'utilisateur
-p -> mot de passe
--db -> db à partir de laquelle vous souhaitez exporter
--collection -> collection que vous souhaitez exporter
--type -> type d'export dans mon cas CSV
--out -> nom du fichier où vous souhaitez exporter
--fields -> tous les champs que vous souhaitez exporter (ne donnez pas d'espaces entre deux noms de champ entre les virgules en cas de CSV)
--authenticationDatabase -> base de données où toutes vos informations utilisateur sont stockées
la source
Commande ci-dessous utilisée pour exporter la collection au format CSV.
Remarque:
naag
est une base de données,employee1_json
est une collection.la source