MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Importer des données CSV en tant que tableau dans MongoDB à l'aide de mongoimport

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.