Utilitaire d'importation de MongoDB - mongoimport
– introduit un nouveau paramètre qui vous permet d'importer des données CSV sous forme de tableau.
Le --useArrayIndexFields
Le paramètre interprète les nombres naturels dans les champs comme des index de tableau lors de l'importation de fichiers CSV ou TSV.
Exemple
Supposons que nous ayons un fichier CSV appelé tags.csv
ça ressemble à ça :
tags.0,tags.1,tags.2,tags.3
html,css,sql,xml
Nous pouvons importer cela en utilisant le --useArrayIndexFields
paramètre, ce qui entraînera mongoimport
pour interpréter les nombres dans les en-têtes de colonne comme des index de tableau.
Exemple :
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=tags.csv
Sortie :
2021-01-03T20:55:44.284+1000 no collection specified 2021-01-03T20:55:44.284+1000 using filename 'tags' as collection 2021-01-03T20:55:44.297+1000 connected to: mongodb://localhost/ 2021-01-03T20:55:44.330+1000 1 document(s) imported successfully. 0 document(s) failed to import.
Comme je n'ai pas spécifié de nom de collection, cela a créé une collection appelée tags
(basé sur le nom du fichier), puis importé mon document.
Passons au shell mongo et vérifions la collection.
db.tags.find()
Résultat :
{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }
Nous pouvons voir que les données CSV ont été importées sous forme de tableau JSON.
Le voici à nouveau mais avec un formatage plus agréable, ce qui pourrait rendre le tableau plus facile à voir.
db.tags.find().pretty()
Résultat :
{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }
Combiné avec d'autres données CSV
Le fichier CSV de l'exemple précédent se composait uniquement de données de tableau. Mais nous pouvons également inclure d'autres données dans le fichier.
Voici un exemple de fichier CSV appelé articles.csv
qui contient d'autres données.
_id,title,body,tags.0,tags.1,tags.2,tags.3 1.0,Web,blah,html,css,sql,xml 2.0,Animals,blah 2,cats,dogs 3.0,Plants,blah 3,trees 4.0,Oceans,blah 4
Importons ce fichier :
mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=articles.csv
Sortie :
2021-01-03T21:14:38.286+1000 no collection specified 2021-01-03T21:14:38.287+1000 using filename 'articles' as collection 2021-01-03T21:14:38.336+1000 connected to: mongodb://localhost/ 2021-01-03T21:14:38.407+1000 4 document(s) imported successfully. 0 document(s) failed to import.
Passons maintenant au shell mongo et vérifions la collection.
db.articles.find()
Résultat :
{ "_id" : 1, "title" : "Web", "body" : "blah", "tags" : [ "html", "css", "sql", "xml" ] } { "_id" : 3, "title" : "Plants", "body" : "blah 3", "tags" : [ "trees" ] } { "_id" : 4, "title" : "Oceans", "body" : "blah 4" } { "_id" : 2, "title" : "Animals", "body" : "blah 2", "tags" : [ "cats", "dogs" ] }
Soyons un peu plus beaux.
db.articles.find().pretty()
Résultat :
{ "_id" : 1, "title" : "Web", "body" : "blah", "tags" : [ "html", "css", "sql", "xml" ] } { "_id" : 3, "title" : "Plants", "body" : "blah 3", "tags" : [ "trees" ] } { "_id" : 4, "title" : "Oceans", "body" : "blah 4" } { "_id" : 2, "title" : "Animals", "body" : "blah 2", "tags" : [ "cats", "dogs" ] }
Nous pouvons donc voir que les documents ont été créés en tant que documents JSON/BSON parfaits et que des tableaux ont été créés pour les données pertinentes.
Notez qu'aucun tableau n'a été créé pour le document 4. Cela est dû au fait qu'aucune donnée de tableau n'a été fournie dans le fichier CSV. Ainsi, plutôt que de créer un champ avec un tableau vide, il n'a pas créé le champ ou le tableau.