Importando dados de um arquivo xlsx para o banco de dados relacional com NodeJs

Quem nunca se viu obrigado a trabalhar com dados de uma planilha de excel, não é mesmo ?

Matheus Sandrini Rossi
Matheus Rossi
3 min readApr 1, 2018

--

Volta e meia, precisamos importar dados das mais diversas fontes, seja txt, pdf ou planilhas de Excel (caso que veremos hoje). Se é isso que procuras, este post vai lhe ajudar.

O que precisamos? Conhecimento básico sobre o ecossistema javascript, mais especificamente, sobre nodeJs.

Ferramentas que vão nos ajudar:

  • NodeJs e Npm
  • node-xlsx → Pacote que será responsável por ler o arquivo xlsx (excel)
  • knex → Um SQL Query Builder, responsável pela comunicação com o banco de dados.
  • dotenv → Pacote onde armazenaremos algumas variáveis de ambiente (dados de acesso ao banco)

No final do post, deixarei um link a estrutura básica deste projeto, para que você baixe e comece já com um boilerplate (caso necessário).

Inicialização do projeto e instalação dos pacotes

  1. Crie uma pasta nova, neste caso chamaremos de xlsx-extract

2. Dê inicio ao projeto dentro desta pasta

3. Instale os seguintes pacotes:

Entendo o Knex e configurando o acesso ao banco de dados

Muitas vezes nossa Stack não permite trabalharmos com mongoDB, e acabamos com nosso velho e ótimo banco de dados relacional. Neste caso vamos trabalhar com exemplos do MSSQL, porém facilmente podemos trocar por qualquer outro banco.

O knex nos permite fazer queries ao banco, de maneira um pouco (bem) diferente do nosso SQL padrão, conforme podemos ver abaixo neste exemplo extremamente simples:

Você vai precisar ler a documentação para compreender todo o poder do knex, mas acredite, vale a pena. Uma ótima documentação cheia de exemplos lhe aguarda :)

Configurando o acesso ao banco de dados

Dentro do boilerplate deste projeto, vamos encontrar a seguinte estrutura de configuração do banco de dados:

O importante aqui, está dentro da pasta db → config → index.js . Se você já trabalha com nodeJS, sabe da importância de não colocar seus dados de acesso diretamente no código fonte do projeto, e este é o objetivo do pacote dotenv. Lembre de alterar o client para seu driver instalado, e configurar as demais senhas no arquivo .env deste boilerplate (link no final do post).

Stop talking, show me the code …

A explicação do porque de cada código, pode ser encontrada no gist a cima e nos comentários do github do projeto. Feito isto corretamente, nossos dados já devem estar no banco!

Vale ressaltar a importância de se entender o Knex corretamente, para que o trabalho com o DB seja realmente produtivo, mesmo não se escrevendo exatamente SQL.

Github do Projeto

Sinta-se a vontade para retirar possíveis dúvidas ou deixar sugestões …

--

--

Matheus Rossi
Matheus Rossi

Published in Matheus Rossi

Data Architect / Data Engineer / Data Governance

Matheus Sandrini Rossi
Matheus Sandrini Rossi

Written by Matheus Sandrini Rossi

Data Engineer, Especialista em Gestão da Qualidade,Engenharia de Produção e Engenharia de Dados. Estudante de Eng de Software e fotógrafo p/ hobby