Script em python para carregar os arquivos de cnpj dos dados públicos da Receita Federal em MYSQL e POSTGRESQL. O código é compatível com o layout das tabelas disponibilizadas pela Receita Federal a partir de 2021.
Os arquivos csv zipados com os dados de CNPJs estão disponíveis em https://dados.gov.br/dados/conjuntos-dados/cadastro-nacional-da-pessoa-juridica---cnpj ou https://dadosabertos.rfb.gov.br/CNPJ/ (http://200.152.38.155/CNPJ/).
Python 3.8;
Bibliotecas pandas, dask, sqlalchemy. Para mysql instalar a biblioteca pymysql. Para postgres usar psycopg2.
Para instalar a biblioteca, use o comando
pip install pymysql
Para postgres, instale psycopg2 (recomenda-se psycopg2-binary para instalação mais simples)
pip install psycopg2-binary (testado no Ubuntu).
Obtenha uma relação dos arquivos disponíveis pelo comando no Anaconda prompt:
python dados_cnpj_lista_url.py
Para baixar os arquivos, use o comando:
python dados_cnpj_baixa.py
Isso copiará os arquivos para a pasta "dados-publicos-zip".
Se o download estiverm muito lento, sugiro utilizar um gerenciador de downloads.
Crie uma pasta com o nome "dados-publicos". Esta pasta deve estar vazia.
No servidor MYSQL ou POSTGRES, crie um database, por exemplo, cnpj.
Especifique os parâmetros no começo do script:
dbname = 'cnpj'
username = 'root'
password = ''
host = '127.0.0.1'
Para iniciar esse script, em um console digite
python dados_cnpj_mysql.py
ou
python dados_cnpj_postgres.py
A execução durou cerca de 5hs em um notebook i7 de 8a geração com Windows 10 no script para mysql. No caso do postgres, fiz teste só com uma amostra em Linux (Ubuntu 20.4). Se a execução deste script demorar muito, uma opção é usar o projeto em https://github.com/rictom/cnpj-sqlite para gerar o arquivo em sqlite e usar uma ferramenta como o pgloader ou o DBeaver para converter depois em postgres. Este colega usou o pgloader com um bom desempenho: rictom#5
Para trabalhar com os dados de cnpj no formato SQLITE, use o meu projeto (https://github.com/rictom/cnpj-sqlite).
A criação do arquivo sqlite é muita mais rápida que o carregamento da base em Mysql ou Postgres.
O projeto (https://github.com/rictom/rede-cnpj) utiliza os dados públicos de CNPJ para visualização de relacionamentos entre empresas e sócios.
versão 0.2 (janeiro/2022)
- aceita sqlalchemy>=2.0;
versão 0.2 (julho/2022)
- alterações menores no sql, para funcionar também em postgres;
- versão para postgres.
versão 0.1 (novembro/2021)
- primeira versão