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

Importar um arquivo CSV para o MongoDB com mongoimport


Ao usar o MongoDB, você pode usar mongoimport para importar documentos para uma coleção. mongoimport é um utilitário de linha de comando que importa conteúdo de um arquivo JSON, CSV ou TSV estendido. O arquivo de importação pode ter sido criado por mongoexport ou algum outro utilitário de exportação.

Este artigo apresenta exemplos de importação de um arquivo CSV para o MongoDB.

Exemplo


Suponha que temos o seguinte arquivo CSV chamado pets.csv :
_id,name,type
1,"Wag","Dog"
2,"Bark","Dog"
3,"Meow","Cat"

O comando a seguir importa o arquivo CSV para o MongoDB:
mongoimport --db=PetHotel --type=csv --headerline --file=pets.csv

Nesse caso, não especifiquei uma coleção para importar, então criei uma coleção com o mesmo nome do arquivo (pets ).

Verifique os resultados


Vamos dar uma olhada na coleção.
db.pets.find()

Resultado:
{ "_id" : 1, "name" : "Wag", "type" : "Dog" }
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }

Podemos ver que os documentos foram importados conforme o esperado.

Arquivos CSV sem cabeçalhos de coluna


No exemplo anterior, usamos o --headerline parâmetro para especificar que a primeira linha deve ser usada para os nomes dos campos.

Se seu arquivo CSV não contiver uma linha de cabeçalho, você precisará usar os --fields parâmetro ou o --fieldFile parâmetro para especificar os nomes dos campos.

Então, imagine que nosso arquivo CSV não tenha a linha de coluna e tenha esta aparência:
1,"Wag","Dog"
2,"Bark","Dog"
3,"Meow","Cat"

Poderíamos então usar o seguinte comando para importar o arquivo:
mongoimport --db=PetHotel --type=csv --fields=_id,name,type --file=pets.csv

Isso tem o mesmo resultado do exemplo anterior.

Especifique o nome da coleção


Você pode usar o --collection (ou -c ) para especificar uma coleção para a qual importar o arquivo.

Aqui está um exemplo de como usar o --collection parâmetro para importar o mesmo arquivo para uma coleção diferente:
mongoimport --db=PetHotel --collection=pets2 --type=csv --fields=_id,name,type --file=pets.csv

Se a coleção ainda não existir, ela será criada. Se já existir, o resultado da importação dependerá do modo que você está usando (mais sobre isso posteriormente).

No nosso caso, veja como é a coleção recém-criada:
db.pets2.find()

Resultado:
{ "_id" : 2, "name" : "Bark", "type" : "Dog" }
{ "_id" : 3, "name" : "Meow", "type" : "Cat" }
{ "_id" : 1, "name" : "Wag", "type" : "Dog" }

Solte a coleção antes de importar


Você pode usar o --drop parâmetro para descartar qualquer coleção existente com o mesmo nome que você está tentando criar/importar.

Imagine que temos um segundo arquivo, chamado pets2.csv , com o seguinte documento:
_id,name,type,weight
4,"Bubbles","Fish",3

Veja o que acontece se eu importar esse documento para o pets2 coleção usando o --drop opção:
mongoimport --db=PetHotel --collection=pets2 --type=csv --headerline --drop --file=pets2.csv

Saída:
2021-01-03T15:05:40.281+1000	connected to: mongodb://localhost/
2021-01-03T15:05:40.284+1000	dropping: PetHotel.pets2
2021-01-03T15:05:40.336+1000	1 document(s) imported successfully. 0 document(s) failed to import.

Isso nos diz que a coleção foi descartada e um documento foi importado.

Vamos dar uma olhada na coleção:
db.pets2.find()

Resultado:
{ "_id" : 4, "name" : "Bubbles", "type" : "Fish", "weight" : 3 }

Como esperado, nosso novo documento é o único da coleção.

Modos de importação


Existem vários modos de importação que você pode usar com mongoimport . Esses modos determinam o que acontece se já houver documentos correspondentes na coleção para a qual você está tentando importar.

Os modos são os seguintes:
Modo Descrição
insert Este é o modo padrão. Este modo insere os documentos do arquivo de importação. Se já existir um documento correspondente na coleção, ocorrerá um erro. Um documento correspondente é aquele que tem o mesmo ID exclusivo (como um _id correspondente field) como um documento no arquivo de importação.
upsert Substitui os documentos existentes no banco de dados pelos documentos correspondentes do arquivo de importação. Todos os outros documentos são inseridos.
merge Mescla documentos existentes que correspondem a um documento no arquivo de importação com o novo documento. Todos os outros documentos são inseridos.
delete Exclui documentos existentes no banco de dados que correspondem a um documento no arquivo de importação. Quaisquer documentos não correspondentes não têm efeito.

Veja os modos de importação de mongoimport para exemplos de cada modo.

Verifique se há mongoimport


mongoimport faz parte do pacote MongoDB Database Tools. As ferramentas de banco de dados do MongoDB são um conjunto de utilitários de linha de comando para trabalhar com o MongoDB.

Se você não tem certeza se possui o MongoDB Database Tools/mongoimport instalado, tente executar o seguinte comando em seu Terminal ou Prompt de Comando para verificar:
mongoimport --version

Se você o tiver, deverá ver as informações da versão, etc. Se não o tiver, poderá usar as instruções de instalação no site do MongoDB para instalá-lo em seu sistema.

Onde executar mongoimport Comandos?


Você precisa executar mongoimport comandos da linha de comando do seu sistema (por exemplo, um novo Terminal ou janela de prompt de comando).

Não os execute a partir do mongo Concha.