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

Exportar uma coleção do MongoDB para um arquivo CSV


As ferramentas de banco de dados MongoDB incluem um utilitário chamado mongoexport que permite exportar dados do MongoDB para um arquivo CSV ou JSON.

Este artigo mostra como usar mongoexport para exportar uma coleção do MongoDB para um arquivo CSV.

Sintaxe


A sintaxe para mongoexport fica assim:
mongoexport --collection=<coll> <options> <connection-string>

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

Não execute mongoexport comandos do mongo Concha.

Exportar uma coleção


O código de exemplo a seguir exporta uma coleção do MongoDB:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --out=data/pets.csv

Isso exporta uma coleção chamada pets do PetHotel banco de dados para um arquivo chamado pets.csv nos data/ pasta.

Se a pasta não existir, ela será criada. O mesmo com o arquivo. A propósito, isso pressupõe que não há problemas de permissão ao gravar um arquivo no local especificado.

Neste exemplo, não especifiquei nenhum host, porta, autenticação etc., portanto, ele exporta a coleção da instância do MongoDB em execução no número de porta localhost padrão 27017 .

Abaixo está uma explicação dos parâmetros que fornecemos aqui.
Parâmetro Descrição
--db
ou
-d
Especifica o banco de dados que contém a coleção que desejamos exportar. Neste caso, o banco de dados é chamado de PetHotel .
Este parâmetro pode ser passado alternativamente usando -d (em vez de --db ).
--collection
ou
-c
Especifica a coleção que queremos exportar. Neste caso, a coleção é chamada de pets .
Este parâmetro também pode ser passado como -c (em vez de --collection ).
--type Especifica o tipo de arquivo exportado. Neste caso especificamos csv para exportá-lo para um arquivo CSV.
--fields Especifica os campos que queremos exportar. Temos a opção de exportar todos os campos da coleção, ou apenas alguns. Você precisa listar cada um aqui, separado por uma vírgula. Ao exportar para CSV, especificar os nomes dos campos é um requisito. Você pode fazer isso através dos --fields parâmetro ou o --fieldFile parâmetro (mais sobre isso depois).
--out Especifica o nome do arquivo exportado e onde ele será localizado. Se você não especificar um nome de arquivo, mongoexport grava dados na saída padrão (stdout ).

Verifique o arquivo exportado


Vamos verificar se a operação de exportação funcionou conforme o esperado.

Primeiro, vamos verificar a coleção original.
use PetHotel
db.pets.find()

Resultado:
{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

Assim podemos ver que são 7 pets, todos com os mesmos campos que especificamos em nossa operação de exportação.

Agora vamos abrir o arquivo exportado pets.csv para ver o que tem dentro:
_id,name,type,weight
1,Wag,Dog,20
2,Bark,Dog,10
3,Meow,Cat,7
4,Scratch,Cat,8
5,Bruce,Bat,3
6,Fetch,Dog,17
7,Jake,Dog,30

OK, todos os dados estão no arquivo exportado conforme o esperado.

Remover cabeçalhos de coluna


Você notará que o arquivo exportado no exemplo anterior incluiu os cabeçalhos das colunas.

Você também tem a opção de exportar o arquivo sem cabeçalhos de coluna. Para fazer isso, use o --noHeaderLine parâmetro.

Exemplo:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --noHeaderLine --out=data/pets.csv

Agora, quando abro o arquivo exportado, não há cabeçalhos de coluna:
1,Wag,Dog,20
2,Bark,Dog,10
3,Meow,Cat,7
4,Scratch,Cat,8
5,Bruce,Bat,3
6,Fetch,Dog,17
7,Jake,Dog,30

Use um arquivo para os nomes dos campos


Você pode substituir o --field parâmetro com o --fieldFile parâmetro para especificar o nome de um arquivo que contém os nomes de campo que você deseja exportar.
mongoexport --db=PetHotel --collection=pets --type=csv --fieldFile=data/pets_fields.txt --out=data/pets.csv

O arquivo que contém os campos deve ter os campos listados, um por linha.

Veja o que o pets_fields.txt arquivo parecia para este exemplo:
_id
name
type
weight

Isso resultou no conteúdo do arquivo exportado assim:
_id,name,type,weight
1,Wag,Dog,20
2,Bark,Dog,10
3,Meow,Cat,7
4,Scratch,Cat,8
5,Bruce,Bat,3
6,Fetch,Dog,17
7,Jake,Dog,30

Alterando a ordem das colunas


Você pode mudar a ordem dos campos para exportar. Eles não precisam estar na mesma ordem do documento subjacente.

Por exemplo, este código:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=_id,weight,type,name --out=data/pets.csv

Resultados no seguinte arquivo CSV:
_id,weight,type,name
1,20,Dog,Wag
2,10,Dog,Bark
3,7,Cat,Meow
4,8,Cat,Scratch
5,3,Bat,Bruce
6,17,Dog,Fetch
7,30,Dog,Jake

E o seguinte:
mongoexport --db=PetHotel --collection=pets --type=csv --fields=type,name,weight,_id --out=data/pets.csv

Resultados nisso:
type,name,weight,_id
Dog,Wag,20,1
Dog,Bark,10,2
Cat,Meow,7,3
Cat,Scratch,8,4
Bat,Bruce,3,5
Dog,Fetch,17,6
Dog,Jake,30,7

Controle de acesso/autenticação


Se você não estiver usando localhost, você pode usar o --host parâmetro para especificar o host e --port para especificar a porta. Você também pode usar o --username parâmetro para especificar o nome de usuário e --password para a senha. Se você omitir o parâmetro de senha, ele será solicitado. Há também um --authenticationDatabase parâmetro para especificar o banco de dados de autenticação onde o usuário foi criado.

Exemplo:
mongoexport --host=myhost.example.com --port=37017 --username=homer --authenticationDatabase=admin --db=PetHotel --collection=pets --type=csv --fields=_id,name,type,weight --out=data/pets.csv

Verifique se há mongoexport


mongoexport 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/mongoexport instalado, tente executar o seguinte comando no seu Terminal ou Prompt de Comando para verificar:
mongoexport --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 os comandos?


Não se esqueça, você precisa executar mongoexport 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.