Quem nunca precisou abrir arquivo para importar o seus dados para uma base de dados? Esse é um processo simples que ajuda muito outras equipes como de RH, Financeiro … etc.
Hoje eu irei demonstrar como importar dados de um arquivo .csv com algumas das batalhas que ocorreram na serie GOT (Game of Thrones), utilizando o Node.js e uma base de dados mongoDB.
Para pular a etapa de criação de um novo projeto eu irei utilizar a versão final desse artigo. Caso tenha interesse em clonar esse projeto, segue o seu link no meu GitHub: node-csv-mongodb.
O projeto está bem simples, abaixo você tem uma breve explicação de cada um dos arquivos utilizados.
Analisando ela nós temos:
- config/db: arquivo de conexão com a nossa base de dados
- models/battles.js: model contendo os campos do arquivo .csv
- repository/battleRepository: arquivo de mapeamento da model com a collection do banco de dados
- battles.csv: arquivo contendo algumas das batalhas que ocorreram na série GOT
- index.js: nós iremos explorar esse arquivo melhor, mas por hora ele é o responsável por abrir o arquivo .csv e importar os dados para o nosso banco de dados
Abra o projeto no seu editor de textos preferido, em seguida adicione a sua string de conexão no arquivo db.js. Com essa etapa OK, vamos analisar o arquivo index.js:
const db = require('./config/db'); const battleRepository = require('./repository/battleRepository'); const csv = require('csv-parser'); const fs = require('fs'); fs.createReadStream('./battles.csv') .pipe(csv()) .on('data', (row) => { battleRepository.create(row); }) .on('end', () => { console.log('CSV file successfully processed') });
Analisando esse trecho de código nós temos:
- 01: estamos importando o arquivo db.js com a nossa conexão com o db
- 02: estamos importando o nosso repository, ele será responsável pelas nossas queries.
- 04 e 05: importando os pacotes (fs) e (csv-parser) para manipularmos o arquivo .csv
- 07 até a 14: estamos passando o caminho do arquivo que iremos manipular -> abrindo ele -> passando os dados para o método .create do nosso repository para ele salvar os dados no db, assim que ele finalizar irá retornar a mensagem: ‘CSV file successfully processed’.
Para ficar mais clara essa etapa, comente a linha 11 do arquivo e adicione um console.log(row); no lugar, em seguida execute o comando node index.js. Abaixo você tem uma imagem demonstrando esse passo:
Note que ele passa por cada uma das linhas do arquivo e retorna cada uma deles na row. Agora descomente a linha 11 e execute o comando node index.js novamente.
Para verificar se os dados foram importados corretamente, eu irei utilizar o Robo 3T para conectar na minha base de dados. Abaixo você tem uma imagem demonstrando esse passo:
Note que todos os arquivos formam importados corretamente.
Bom, a ideia desse artigo era ser algo rápido para demonstrar como importar um arquivo .csv em um banco de dados mongoDB.
Espero que tenham gostado e até um próximo artigo pessoal.