MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Importieren Sie CSV-Daten als Array in MongoDB mit mongoimport

Importdienstprogramm von MongoDB – mongoimport – Einführung eines neuen Parameters, mit dem Sie CSV-Daten als Array importieren können.

Die --useArrayIndexFields Parameter interpretiert natürliche Zahlen in Feldern als Array-Indizes beim Importieren von CSV- oder TSV-Dateien.

Beispiel

Angenommen, wir haben eine CSV-Datei namens tags.csv das sieht so aus:

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

Wir können das mit --useArrayIndexFields importieren Parameter, der mongoimport bewirkt um die Zahlen in den Spaltenüberschriften als Array-Indizes zu interpretieren.

Beispiel:

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

Ausgabe:

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.

Da ich keinen Sammlungsnamen angegeben habe, wurde eine Sammlung namens tags erstellt (basierend auf dem Namen der Datei) und dann mein Dokument importiert.

Lassen Sie uns zur Mongo-Muschel springen und die Sammlung überprüfen.

db.tags.find()

Ergebnis:

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

Wir können sehen, dass die CSV-Daten als JSON-Array importiert wurden.

Hier ist es noch einmal, aber mit schönerer Formatierung, die das Array vielleicht besser sichtbar macht.

db.tags.find().pretty()

Ergebnis:

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

Kombiniert mit anderen CSV-Daten

Die CSV-Datei im vorherigen Beispiel bestand nur aus Array-Daten. Aber wir können auch andere Daten in die Datei aufnehmen.

Hier ist ein Beispiel für eine CSV-Datei namens articles.csv die andere Daten enthält.

_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

Lassen Sie uns diese Datei importieren:

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

Ausgabe:

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.

Lassen Sie uns jetzt zur Mongo-Muschel springen und die Sammlung überprüfen.

db.articles.find()

Ergebnis:

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

Lass es uns ein wenig aufpeppen.

db.articles.find().pretty()

Ergebnis:

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

Wir können also sehen, dass die Dokumente als perfekte JSON/BSON-Dokumente erstellt wurden und Arrays für die relevanten Daten erstellt wurden.

Beachten Sie, dass für Dokument 4 kein Array erstellt wurde. Dies liegt daran, dass in der CSV-Datei keine Array-Daten bereitgestellt wurden. Anstatt also ein Feld mit einem leeren Array zu erstellen, wurde weder das Feld noch das Array erstellt.