MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Importuj dane CSV jako tablicę w MongoDB za pomocą mongoimport

Narzędzie importu MongoDB – mongoimport – wprowadzono nowy parametr, który pozwala importować dane CSV jako tablicę.

--useArrayIndexFields parametr interpretuje liczby naturalne w polach jako indeksy tablicy podczas importowania plików CSV lub TSV.

Przykład

Załóżmy, że mamy plik CSV o nazwie tags.csv to wygląda tak:

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

Możemy to zaimportować za pomocą --useArrayIndexFields parametr, który spowoduje mongoimport interpretować liczby w nagłówkach kolumn jako indeksy tablicy.

Przykład:

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

Wyjście:

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.

Widząc, że nie określiłem nazwy kolekcji, utworzył kolekcję o nazwie tags (na podstawie nazwy pliku), a następnie zaimportował mój dokument.

Przejdźmy do powłoki mongo i sprawdźmy kolekcję.

db.tags.find()

Wynik:

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

Widzimy, że dane CSV zostały zaimportowane jako tablica JSON.

Tutaj znowu, ale z ładniejszym formatowaniem, co może sprawić, że tablica będzie łatwiejsza do zobaczenia.

db.tags.find().pretty()

Wynik:

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

Połączone z innymi danymi CSV

Plik CSV w poprzednim przykładzie składał się tylko z danych tablicowych. Ale możemy dołączyć również inne dane do pliku.

Oto przykład pliku CSV o nazwie articles.csv który zawiera inne dane.

_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

Zaimportujmy ten plik:

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

Wyjście:

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.

Przejdźmy teraz do powłoki mongo i sprawdźmy kolekcję.

db.articles.find()

Wynik:

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

Udekorujmy to trochę.

db.articles.find().pretty()

Wynik:

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

Widzimy więc, że dokumenty zostały stworzone jako doskonałe dokumenty JSON/BSON, a tablice zostały stworzone dla odpowiednich danych.

Zauważ, że nie utworzono tablicy dla dokumentu 4. Jest tak, ponieważ w pliku CSV nie podano danych tablicy. Więc zamiast tworzyć pole z pustą tablicą, nie utworzył pola ani tablicy.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. usuń _id z wyniku mongo

  2. Agregat Moongoose $match nie pasuje do identyfikatora

  3. Definiowanie schematu Mongoose na bieżąco z „opisu” w formacie JSON

  4. Czy zastosowanie indeksu 2dsphere w schemacie mangusty wymusza, aby pole lokalizacji było wymagane?

  5. ClusterControl — wszystkie najważniejsze funkcje i ulepszenia z 2017 roku