Programa para baixar, limpar e importar os dados abertos de CNPJ para um banco de MySQL.
O banco está conforme ao novo padrão da receita federal.
O mais fácil é rodar utilizando o docker, no qual será criado um container contendo o banco em MySQL, acessável no port 3307.
Porém é possível rodar com Go e um banco MySQL para conectar.
docker volume create cnpj_db
docker-compose build
docker-compose run --rm dados-cnpj download // Downloads podem ser instáveis, ler a seção de Dados no README
docker-compose run --rm dados-cnpj transform
docker-compose run --rm dados-cnpj insert
Pra rodar sem docker é necessário configurar algum banco de dados, preferencialmente MySQL, alterando a variável dsn em database/database.go.
{USER}:{PASSWD}@tcp({HOST}:{PORT})/{DB_NAME}?charset=latin2&collation=latin2_general_ci&autocommit=false&parseTime=true
Além disso é necessário preparar o banco a partir do dados/create.sql.
Por fim:
go get
go run main.go download
go run main.go transform
go run main.go insert
A conexão do Go é feita utilizando GORM, assim, é possível apenas alterar o arquivo database.go e importar o driver correto para conectar com outros bancos como PostgreSQL ou SQLite. Preparando o banco conforme o create.sql é provavel que a importação funcione sem maiores problemas.
O download dos dados providenciados pela receita federal pode ser bastante instável. As velocidades são bem baixas e muitas vezes não concluêm. Assim, recomendo baixar diretamente pelo site ao invés de utilizar o comando download, garantindo que todos os arquivos zips foram baixados por completos.
Após isso basta colocar os arquivos ZIP dentro da pasta data e rodar os comandos transform e insert.
Esse projeto foi bastante baseado na implementação do minha-receita do Cuducos, porém funcionando com a nova versão dos dados e com o MySQL.