GithubHelp home page GithubHelp logo

elizandrodantas / cnpj-data-go Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 43 KB

Este repositório contém um projeto em Go (Golang) para a extração e tratamento de dados do Cadastro Nacional da Pessoa Jurídica (CNPJ)

License: MIT License

Go 100.00%
cnpj gov gov-br dadosaberto

cnpj-data-go's Introduction


Cadastro Nacional da Pessoa Jurídica - Ministerio da Fazenda

Bem-vindo ao repositório do projeto de Extração e Tratamento de Dados para Bancos de Dados Relacionais! Este projeto foi desenvolvido com o objetivo de facilitar a obtenção, tratamento e inclusão de dados provenientes do Cadastro Nacional da Pessoa Jurídica (CNPJ), um banco de dados gerenciado pela Secretaria Especial da Receita Federal do Brasil (RFB).

A fonte principal dos dados utilizados neste projeto é o Cadastro Nacional da Pessoa Jurídica (CNPJ), um banco de dados que armazena informações cadastrais das pessoas jurídicas e outras entidades de interesse das administrações tributárias da União, dos Estados, do Distrito Federal e dos Municípios. O Ministério da Fazenda, órgão da estrutura administrativa da República Federativa do Brasil, é responsável pela formulação e execução da política econômica e tem papel fundamental na gestão do Cadastro Nacional da Pessoa Jurídica.

Funcionalidades Principais

O projeto oferece as seguintes funcionalidades principais:

  1. Extração de Dados: Capacidade de acessar a fonte de dados do CNPJ e obter informações cadastrais das pessoas jurídicas e entidades correlatas.

  2. Tratamento de Dados: Implementação de mecanismos para limpeza, transformação e preparação dos dados extraídos, assegurando a qualidade e consistência das informações.

  3. Integração com Bancos de Dados Relacionais: Facilidade para incluir os dados tratados em um banco de dados relacional escolhido, como SQLite, MySQL ou PostgreSQL, tornando-os acessíveis para aplicações e análises.

Como Utilizar

Para utilizar o projeto, siga os passos a seguir:

  1. Clone o Repositório: Abra um terminal ou prompt de comando e execute o seguinte comando para clonar o repositório em sua máquina local:
git clone https://github.com/elizandrodantas/cnpj-data-go.git
  1. Navegue até o Diretório do Projeto: Acesse a pasta do projeto por meio do terminal, navegando para o diretório cmd/cnpj-gov-go/:
cd caminho/do/projeto/cmd/cnpj-data-go/
  1. Build com Go: Com o Go instalado em sua máquina, realize o build do projeto com o seguinte comando:
go build

Após a execução bem-sucedida do comando acima, será gerado um executável com o nome do projeto no diretório atual.

  1. Execução do Projeto: Agora que o projeto foi compilado, você pode executá-lo para iniciar o processo de extração e tratamento dos dados do CNPJ. Utilize o seguinte comando:
./cnpj-gov-go -D <driver> -host <host> -user <usuario> -pass <senha> -port <porta> -dbname <nome_do_banco> -ssl <modo_ssl> -F <pasta>

As flags disponíveis são:

  • -D: Flag para selecionar o driver do banco de dados a ser utilizado. Opções possíveis: sqlite3, mysql, postgres. O padrão é sqlite3 caso não seja especificado.
  • -host: Host do banco de dados.
  • -user: Nome do usuário para autenticação no banco de dados.
  • -pass: Senha do usuário para autenticação no banco de dados.
  • -port: Porta para conexão com o banco de dados.
  • -dbname: Nome do banco de dados que será utilizado.
  • -ssl: Modo de conexão com SSL (caso seja necessário).
  • -drop: Essa flag é responsável por fazer um drop em todas as tabelas do banco de dados. Ao utilizar essa opção, todas as informações existentes nas tabelas serão apagadas.
  • -F <pasta>: Essa flag permite fazer a migração do banco de dados a partir de um arquivo ao invés de fazer o download padrão. Você deve passar o valor correspondente à pasta em que se encontram os bancos a serem migrados. Os bancos estão disponíveis em Dados Aberto -> Recursos.
  • -ignore-create-table: Ignora a criação das tabelas.

Nenhuma das flags é obrigatória. Caso você não forneça nenhuma delas, o projeto utilizará o banco de dados SQLite como padrão.

Contribuindo

Se você deseja contribuir com melhorias, correções de bugs ou novas funcionalidades, fique à vontade para enviar um pull request.

Licença

Este projeto é distribuído sob a licença MIT. Para mais detalhes, consulte o arquivo LICENSE.

cnpj-data-go's People

Contributors

elizandrodantas avatar

Stargazers

 avatar

Watchers

 avatar

cnpj-data-go's Issues

Falta de memoria ao processar arquivo Estabelecimento0.zip

Estou rodando o projeto para montar o banco em SQLite e esta sendo uma mão na roda (Obrigado!), porém tive alguns problemas... sempre que chegava no Estabelecimentos0 ele acabava matando o processo , notei que nos últimos meses esse arquivo esta vindo bem inchado - zipado esta com 1.1gb...

Fui ver no dmesg ele traz:

[617411.452004] Out of memory: Killed process 3358678 (cnpj-data-go) total-vm:15473708kB, anon-rss:13309368kB, file-rss:0kB, shmem-rss:0kB, UID:1000 pgtables:26316kB oom_score_adj:0
Estou no Mint , com 20Gb de memoria acho que deveria ser o suficiente

Notei que o programa descompacta e depois carrega o arquivo que esta processando na memoria, alterei aqui meio que no facão para fazer stream do arquivo (não entendo nada de GO) e baixei o tamanho do BATCH_INSERT para 50, demorou um bocado mas rodou.

Talvez seja interessante mudar o programa para fazer stream no lugar do getData carregar tudo na memória

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.