Dados Públicos CNPJ
A Receita Federal do Brasil disponibiliza bases com os dados públicos do cadastro nacional de pessoas jurídicas (CNPJ).
De forma geral, nelas constam as mesmas informações que conseguimos ver no cartão do CNPJ, quando fazemos uma consulta individual, acrescidas de outros dados de Simples Nacional, sócios e etc. Análises muito ricas podem sair desses dados, desde econômicas, mercadológicas até investigações.
Nesse repositório consta um processo de ETL para i) baixar os arquivos; ii) descompactar; iii) ler, tratar e iv) inserir num banco de dados relacional PostgreSQL.
Infraestrutura necessária:
-
Python 3.8 - libraries:
- wget
- pandas
- ftplib
- datetime
- gzip
- urllib
- bs4
- re
- os
- zipfile
- sqlalchemy
- psycopg2
- time
-
Banco de dados:
How to use:
-
Com o Postgre instalado, inicie a instância do servidor (pode ser local) e crie o banco de dados conforme o arquivo
banco_de_dados.sql
. -
Conforme o seu ambiente, substitua as variáveis abaixo no arquivo
ETL_coletar_dados_e_gravar_BD.py
:output_files
: diretório de destino para o donwload dos arquivosuser
: usuário do banco de dados criado pelo arquivobanco_de_dados.sql
passw
: senha do usuário do BDhost
: host da conexão com o BDport
: porta da conexão com o BDdatabase
: nome da base de dados na instância (Dados_RFB
- conforme arquivobanco_de_dados.sql
)
-
Executar o arquivo
ETL_coletar_dados_e_gravar_BD.py
e aguardar a finalização do processo.- Os arquivos são grandes: dependendo da infraestrutura isso deve levar muitas horas para conclusão.
- Arquivos de 08/05/2021:
4,68 GB
compactados e17,1 GB
descompactados.
Tabelas geradas:
-
Para maiores informações, consulte o layout.
empresa
: dados cadastrais da empresa em nível de matrizestabelecimento
: dados analíticos da empresa por unidade / estabelecimento (telefones, endereço, filial, etc)socios
: dados cadastrais dos sócios das empresassimples
: dados de MEI e Simples Nacionalcnae
: código e descrição dos CNAEsquals
: tabela de qualificação das pessoas físicas - sócios, responsável e representante legal.natju
: tabela de naturezas jurídicas - código e descrição.moti
: tabela de motivos da situação cadastral - código e descrição.pais
: tabela de países - código e descrição.munic
: tabela de municípios - código e descrição.
-
Pelo volume de dados, as tabelas
empresa
,estabelecimento
,socios
esimples
possuem índices para a colunacnpj_basico
, que é a principal chave de ligação entre elas.