MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB - Importar dados


Use o mongoimport utilitário para importar dados para um banco de dados MongoDB.

O MongoDB fornece o mongoimport utilitário que pode ser usado para importar arquivos JSON, CSV ou TSV para um banco de dados MongoDB.

mongoimport está localizado no diretório bin (por exemplo, /mongodb/bin ou onde quer que você o tenha instalado).

Para importar dados, abra uma nova janela Terminal/Prompt de Comando e digite mongoimport seguido por parâmetros como nome do banco de dados, nome da coleção, nome do arquivo de origem, etc.

Se você achar que não pode executar mongoimport , certifique-se de ter saído do mongo utilitário, ou abriu uma nova janela Terminal/Prompt de Comando antes de executar mongoexport , pois é um utilitário separado.

Importar arquivo JSON


Aqui está um exemplo de execução de mongoimport para importar um arquivo JSON.

Você deve se lembrar que anteriormente usamos mongoexport para exportar os artistas coleção para um arquivo JSON.

Mais tarde, descartamos os artistas coleção por completo.

Agora, importaremos essa coleção de volta ao nosso banco de dados.
mongoimport --db music --file /data/dump/music/artists.json

Mensagem 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

Se você não especificar um nome de coleção, uma coleção será criada com base no nome do arquivo (menos qualquer extensão).

Agora, vamos voltar ao nosso mongo Terminal/Prompt de Comando e recupere a lista de coleções em nosso banco de dados:
show collections

Resultado:
artists
musicians
producers

Agora vamos consultar nossa coleção 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 um nome de coleção


Você pode usar o --collection argumento para fornecer um nome da coleção na qual os dados devem entrar.

Vamos importar outro arquivo, mas desta vez, especifique um nome de coleção:
mongoimport --db music --collection jazz --file /data/dump/music/miles_davis.json

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

Agora volte para mongo e confira a lista de coleções:
show collections

Mensagem resultante:
artists
jazz
musicians
producers

E, finalmente, consulte o jazz coleção:
db.jazz.find().pretty()

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

Importar arquivo CSV


Você pode importar um arquivo CSV usando --type csv .

Se o arquivo CSV tiver uma linha de cabeçalho, use --headerline dizer ao mongoimport para usar a primeira linha para determinar o nome dos campos no documento resultante.

Se o arquivo CSV não tiver uma linha de cabeçalho, use --fields parâmetro para definir os nomes dos campos.

Com linha de cabeçalho


Aqui está um exemplo de importação de um documento com uma linha de cabeçalho.

O conteúdo do arquivo 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

Importe o arquivo:
mongoimport --db music --collection catalog --type csv --headerline --file /data/dump/music/catalog.csv

Consulte a coleção:
> 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" }

Sem linha de cabeçalho


Aqui está outro arquivo CSV, mas este não tem uma linha de cabeçalho:
Mutt Lange, 1948
John Petrucci, 1967
DJ Shadow, 1972
George Clinton, 1941

Agora vamos importá-lo e especificar os nomes dos campos a serem usados:
mongoimport --db music --collection producers --type csv --fields name,born --file /data/dump/music/producers.csv

Consulte a coleção:
> 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 }

Você verá que o ObjectId campo foi criado e preenchido automaticamente para nós.

Além disso, já tínhamos um documento nesta coleção antes de executarmos a importação: { "_id" :1, "name" :"Bob Rock" } . Portanto, você pode ver que a importação simplesmente adicionou à coleção (em vez de substituí-la e todo o seu conteúdo).

Você pode usar o mesmo método para importar arquivos TSV. Basta usar --type tsv .