Skip to content

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CNPJ ETL Pipeline.

Dados Públicos da Receita Federal

Pipeline de ETL para baixar, transformar e carregar em banco de dados relacional os dados públicos de CNPJ e Simples Nacional disponibilizados pela Receita Federal do Brasil.

Todos os meses a Receita publica os dados completos de todas as empresas do país em arquivos compactados, sem estrutura pronta para uso. Este projeto automatiza o processo inteiro: baixa os arquivos, descompacta, modela o banco automaticamente e insere tudo, seja em modo interativo (com menu) ou headless (para rodar em cron/CI).

Baseado no projeto original de aphonsoar, com endpoints corrigidos, ganho de performance na extração e compatibilidade atualizada. Créditos e histórico de licenciamento em LICENSE.

Diagrama ERD

Por que usar

  • Zero configuração manual de schema: o DDL é gerado automaticamente a partir dos dados.
  • Dois modos de execução: menu interativo para uso manual, ou headless para automação.
  • Download concorrente: múltiplas threads configuráveis para acelerar a extração.
  • Carga incremental: opção de preservar dados existentes e inserir só o que é novo.
  • Competência automática: busca sozinho o mês mais recente disponibilizado pela Receita, ou você fixa um mês específico.

Arquitetura do pipeline

  1. Extract: download automatizado (com concorrência) direto do portal de dados abertos da Receita Federal.
  2. Transform: descompactação e adequação dos arquivos no sistema de arquivos local.
  3. Load: geração automática da modelagem (DDL) e inserção em massa no banco relacional.
.
├── src/
│   ├── start_etl.py
│   ├── configs/
│   │   └── .env_template
│   └── etl/
│       ├── cli.py
│       ├── config.py
│       ├── logging_config.py
│       ├── db/
│       │   └── postgres.py
│       ├── services/
│       │   ├── admin_service.py
│       │   └── etl_service.py
│       ├── pipeline/
│       │   ├── download.py
│       │   ├── extract.py
│       │   └── load.py
│       ├── ui/
│       │   ├── console.py
│       │   └── menu.py
│       └── schema/
│           └── tables.py
├── sql/
│   └── banco_de_dados.sql
└── requirements.txt

Instalação

Pré-requisitos: Python 3.8+, um banco relacional (ex: PostgreSQL) e Git.

git clone https://github.com/lvcas-dotcom/cnpj-etl-pipeline.git
cd cnpj-etl-pipeline

cp src/configs/.env_template src/configs/.env
# edite o .env com suas credenciais de banco

pip install -r requirements.txt

Uso

Modo interativo (menu):

python src/start_etl.py --env src/configs/.env

Modo headless (automação/CRON):

python src/start_etl.py --no-menu --env src/configs/.env

Configuração

Variáveis de ambiente (.env):

Variável Descrição
DATA_MONTH Competência específica no formato YYYY-MM. Se omitido, busca a mais recente.
DOWNLOAD_WORKERS Número de threads para paralelizar o download.

Argumentos CLI:

Argumento Descrição
--no-drop Execução incremental: preserva dados existentes, insere só o novo.
--create-db Cria apenas a estrutura do banco e encerra, sem baixar ou inserir dados.

Prefere setup manual do banco? O DDL completo está em sql/banco_de_dados.sql.

Licença

MIT. Veja LICENSE para créditos e histórico completo.

About

Dados Públicos de CNPJ disponibilizados pela Receita Federal do Brasil.

Topics

Resources

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages