sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB - Importar datos

Usa la mongoimport utilidad para importar datos a una base de datos MongoDB.

MongoDB proporciona el mongoimport utilidad que se puede utilizar para importar archivos JSON, CSV o TSV a una base de datos MongoDB.

mongoimport se encuentra en el directorio bin (por ejemplo, /mongodb/bin o donde lo hayas instalado).

Para importar datos, abra una nueva ventana de Terminal/Símbolo del sistema e ingrese mongoimport seguido de parámetros como el nombre de la base de datos, el nombre de la colección, el nombre del archivo fuente, etc.

Si encuentra que no puede ejecutar mongoimport , asegúrese de haber salido de mongo utilidad, o abrió una nueva ventana de Terminal/Símbolo del sistema antes de ejecutar mongoexport , ya que es una utilidad separada.

Importar archivo JSON

Aquí hay un ejemplo de cómo ejecutar mongoimport para importar un archivo JSON.

Tal vez recuerde que anteriormente usamos mongoexport para exportar los artistas colección a un archivo JSON.

Más tarde eliminamos a los artistas colección en total.

Ahora, importaremos esa colección nuevamente a nuestra base de datos.

mongoimport --db music --file /data/dump/music/artists.json

Mensaje resultante:

2016-07-12T13:34:04.904+0700	no collection specified
2016-07-12T13:34:04.905+0700	using filename 'artists' as collection
2016-07-12T13:34:04.911+0700	connected to: localhost
2016-07-12T13:34:04.968+0700	imported 13 documents

Si no especifica un nombre de colección, se crea una colección basada en el nombre del archivo (menos cualquier extensión).

Ahora, volvamos a nuestro mongo ventana Terminal/Símbolo del sistema y recuperar la lista de colecciones en nuestra base de datos:

show collections

Resultado:

artists
musicians
producers

Ahora vamos a consultar nuestra colección revivida.

db.artists.find()

Resultado:

{ "_id" : 1, "artistname" : "AC/DC" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : ObjectId("5781f85d48ef8c6b3ffb0150"), "artistname" : "Deep Purple", "albums" : [ { "album" : "Machine Head", "year" : 1972, "genre" : "Rock" }, { "album" : "Stormbringer", "year" : 1974, "genre" : "Rock" } ] }
{ "_id" : ObjectId("578214f048ef8c6b3ffb0159"), "artistname" : "Miles Davis", "albums" : [ { "album" : "Kind of Blue", "year" : 1959, "genre" : "Jazz" }, { "album" : "Bitches Brew", "year" : 1970, "genre" : "Jazz" } ] }
{ "_id" : ObjectId("578217c248ef8c6b3ffb015a"), "artistname" : "Robben Ford", "albums" : [ { "album" : "Bringing it Back Home", "year" : 2013, "genre" : "Blues" }, { "album" : "Talk to Your Daughter", "year" : 1988, "genre" : "Blues" } ] }
{ "_id" : 2, "artistname" : "Prince", "address" : { "street" : "Audubon Road", "city" : "Chanhassen", "state" : "Minnesota", "country" : "United States" } }
{ "_id" : 4, "artistname" : "Rush" }
{ "_id" : 3, "artistname" : "Moby", "albums" : [ { "album" : "Play", "year" : 1999, "genre" : "Electronica" }, { "album" : "Long Ambients 1: Calm. Sleep.", "year" : 2016, "genre" : "Ambient" } ] }
{ "_id" : ObjectId("578217c248ef8c6b3ffb015b"), "artistname" : "Snoop Dogg", "albums" : [ { "album" : "Tha Doggfather", "year" : 1996, "genre" : "Rap" }, { "album" : "Reincarnated", "year" : 2013, "genre" : "Reggae" } ] }

Especifique un nombre de colección

Puedes usar la --collection argumento para proporcionar un nombre de la colección en la que deben ir los datos.

Importemos otro archivo, pero esta vez, especifique un nombre de colección:

mongoimport --db music --collection jazz --file /data/dump/music/miles_davis.json

Mensaje resultante:

2016-07-12T14:09:01.793+0700	connected to: localhost
2016-07-12T14:09:01.849+0700	imported 1 document

Ahora vuelve a mongo y consulta la lista de colecciones:

show collections

Mensaje resultante:

artists
jazz
musicians
producers

Y finalmente, consulta el jazz colección:

db.jazz.find().pretty()

Mensaje resultante:

{
	"_id" : ObjectId("578214f048ef8c6b3ffb0159"),
	"artistname" : "Miles Davis",
	"albums" : [
		{
			"album" : "Kind of Blue",
			"year" : 1959,
			"genre" : "Jazz"
		},
		{
			"album" : "Bitches Brew",
			"year" : 1970,
			"genre" : "Jazz"
		}
	]
}

Importar archivo CSV

Puede importar un archivo CSV usando --type csv .

Si el archivo CSV tiene una fila de encabezado, use --headerline decirle a mongoimport para usar la primera línea para determinar el nombre de los campos en el documento resultante.

Si el archivo CSV no tiene una fila de encabezado, use los --fields parámetro para establecer los nombres de los campos.

Con fila de encabezado

Este es un ejemplo de cómo importar un documento con una fila de encabezado.

El contenido del archivo CSV:

_id,albumname,artistname
1,Killers,"Iron Maiden"
2,Powerslave,"Iron Maiden"
12,"Somewhere in Time","Iron Maiden"
3,"Surfing with the Alien","Joe Satriani"
10,"Flying in a Blue Dream","Joe Satriani"
11,"Black Swans and Wormhole Wizards","Joe Satriani"
6,"Out of the Loop","Mr Percival"
7,"Suck on This",Primus
8,"Pork Soda",Primus
9,"Sailing the Seas of Cheese",Primus

Importar el archivo:

mongoimport --db music --collection catalog --type csv --headerline --file /data/dump/music/catalog.csv

Consultar la colección:

> db.catalog.find()
{ "_id" : 2, "albumname" : "Powerslave", "artistname" : "Iron Maiden" }
{ "_id" : 1, "albumname" : "Killers", "artistname" : "Iron Maiden" }
{ "_id" : 3, "albumname" : "Surfing with the Alien", "artistname" : "Joe Satriani" }
{ "_id" : 12, "albumname" : "Somewhere in Time", "artistname" : "Iron Maiden" }
{ "_id" : 10, "albumname" : "Flying in a Blue Dream", "artistname" : "Joe Satriani" }
{ "_id" : 6, "albumname" : "Out of the Loop", "artistname" : "Mr Percival" }
{ "_id" : 7, "albumname" : "Suck on This", "artistname" : "Primus" }
{ "_id" : 8, "albumname" : "Pork Soda", "artistname" : "Primus" }
{ "_id" : 11, "albumname" : "Black Swans and Wormhole Wizards", "artistname" : "Joe Satriani" }
{ "_id" : 9, "albumname" : "Sailing the Seas of Cheese", "artistname" : "Primus" }

Sin fila de encabezado

Aquí hay otro archivo CSV, pero este no tiene una fila de encabezado:

Mutt Lange, 1948
John Petrucci, 1967
DJ Shadow, 1972
George Clinton, 1941

Ahora lo importaremos y especificaremos los nombres de campo a usar:

mongoimport --db music --collection producers --type csv --fields name,born --file /data/dump/music/producers.csv

Consultar la colección:

> db.producers.find()
{ "_id" : 1, "name" : "Bob Rock" }
{ "_id" : ObjectId("5784a3a5dfad478c015f6b72"), "name" : "John Petrucci", "born" : 1967 }
{ "_id" : ObjectId("5784a3a5dfad478c015f6b73"), "name" : "Mutt Lange", "born" : 1948 }
{ "_id" : ObjectId("5784a3a5dfad478c015f6b74"), "name" : "George Clinton", "born" : 1941 }
{ "_id" : ObjectId("5784a3a5dfad478c015f6b75"), "name" : "DJ Shadow", "born" : 1972 }

Verá que ObjectId El campo se ha creado y rellenado automáticamente para nosotros.

Además, ya teníamos un documento en esta colección antes de ejecutar la importación: { "_id" :1, "name" :"Bob Rock" } . Por lo tanto, puede ver que la importación simplemente ha agregado a la colección (en lugar de reemplazarla y todo su contenido).

Puede usar el mismo método para importar archivos TSV. Simplemente use --type tsv .