MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Importa dati CSV come array in MongoDB utilizzando mongoimport

Utilità di importazione di MongoDB – mongoimport – introdotto un nuovo parametro che consente di importare dati CSV come un array.

Il --useArrayIndexFields Il parametro interpreta i numeri naturali nei campi come indici di matrice durante l'importazione di file CSV o TSV.

Esempio

Supponiamo di avere un file CSV chiamato tags.csv assomiglia a questo:

tags.0,tags.1,tags.2,tags.3
html,css,sql,xml

Possiamo importarlo usando --useArrayIndexFields parametro, che causerà mongoimport per interpretare i numeri nelle intestazioni di colonna come indici di matrice.

Esempio:

mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=tags.csv

Uscita:

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.

Dato che non ho specificato un nome di raccolta, ha creato una raccolta chiamata tags (in base al nome del file), quindi ho importato il mio documento.

Passiamo alla mongo shell e controlliamo la collezione.

db.tags.find()

Risultato:

{ "_id" : ObjectId("5ff1a2b0300ed79d9836882f"), "tags" : [ "html", "css", "sql", "xml" ] }

Possiamo vedere che i dati CSV sono stati importati come un array JSON.

Eccolo di nuovo, ma con una formattazione migliore, che potrebbe rendere l'array più facile da vedere.

db.tags.find().pretty()

Risultato:

{
	"_id" : ObjectId("5ff1a2b0300ed79d9836882f"),
	"tags" : [
		"html",
		"css",
		"sql",
		"xml"
	]
}

Combinato con altri dati CSV

Il file CSV nell'esempio precedente consisteva solo di dati di matrice. Ma possiamo includere anche altri dati nel file.

Ecco un esempio di file CSV chiamato articles.csv che contiene altri dati.

_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

Importiamo quel file:

mongoimport --db=krankykranes --type=csv --headerline --useArrayIndexFields --file=articles.csv

Uscita:

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.

Ora passiamo alla mongo shell e controlliamo la collezione.

db.articles.find()

Risultato:

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

Rendiamoci un po' belli.

db.articles.find().pretty()

Risultato:

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

Quindi possiamo vedere che i documenti sono stati creati come documenti JSON/BSON perfetti e sono stati creati array per i dati rilevanti.

Si noti che non è stato creato alcun array per il documento 4. Ciò è dovuto al fatto che nel file CSV non sono stati forniti dati di array. Quindi, anziché creare un campo con un array vuoto, non ha creato il campo o l'array.