faio / rfb-cnpj

Projeto que faz a leitura dos dados abertos disponibilizado pela Receita Federal do Brasil mensalmente e os converte para um banco de dados compatível com SQLAchemy
37 stars 14 forks source link

Como mudar a --database_url para PostgreSQL #2

Closed hugobscott closed 3 years ago

hugobscott commented 3 years ago

Ontem rodei com threads ativo em sqLite3, e deu erro no banco. Registrou apenas 100000 empresas.

Hoje estou rodando com threads desativado, parece que vai dar certo! Não achei no sqlarchemy como devo referenciar a database_Url para PostgreSQL

Me ensina? Desde já agradeço o código é de muita ajuda a todos.

faio commented 3 years ago

Bom dia! Como está explicado no readme, com o sqlite3 não funciona com as threads devido a sessão, precisa ser alterado a forma como funciona criando um pool.

Com o postgreSQL da uma olhada em https://docs.sqlalchemy.org/en/14/dialects/postgresql.html o valor que é passado para o create_engine é o utilizado para database_url (exemplo: postgresql+psycopg2://scott:tiger@host/dbname). Não se esqueça de instalar as bibliotecas antes de rodar para evitar erros de comunicação com o postgreSQL.

leandroribeironh commented 3 years ago

Boa noite faio, tudo bem? percebi que a a conversão não esta ignorando ; dentro das quotes, tem como corrigir isso? em dado momento, ele se perde e joga colunas fora de lugar.. Obrigado, belíssimo trabalho!

leandroribeironh commented 3 years ago

Ontem rodei com threads ativo em sqLite3, e deu erro no banco. Registrou apenas 100000 empresas.

Hoje estou rodando com threads desativado, parece que vai dar certo! Não achei no sqlarchemy como devo referenciar a database_Url para PostgreSQL

Me ensina? Desde já agradeço o código é de muita ajuda a todos.

Opa, se eu posso ajudar: python main.py --database_url postgresql+pygresql://USER:SENHA@HOST:PORTA/BANCO

só tens que baixar a biblioteca pygresql e instalar. a dica aqui é sempre usar o postgres de 32bits. usando o de 64 a biblioteca não funciona na importação, pois não conversa!

faio commented 3 years ago

Boa noite faio, tudo bem? percebi que a a conversão não esta ignorando ; dentro das quotes, tem como corrigir isso? em dado momento, ele se perde e joga colunas fora de lugar.. Obrigado, belíssimo trabalho!

Bom dia Bruno, estou bem e você? Man, eu vi isso na ultima conversão que executamos aqui, fiz uma correção no dia 18 e não vi mais problemas com isso, inclusive adicionei uma validação de quantidade de colunas para evitar erros quanto a isso, mesmo com esses problemas está havendo erros na migração? Tem exemplo? Consegue corrigir e enviar um PR?

leandroribeironh commented 3 years ago

Boa noite faio, tudo bem? percebi que a a conversão não esta ignorando ; dentro das quotes, tem como corrigir isso? em dado momento, ele se perde e joga colunas fora de lugar.. Obrigado, belíssimo trabalho!

Bom dia Bruno, estou bem e você? Man, eu vi isso na ultima conversão que executamos aqui, fiz uma correção no dia 18 e não vi mais problemas com isso, inclusive adicionei uma validação de quantidade de colunas para evitar erros quanto a isso, mesmo com esses problemas está havendo erros na migração? Tem exemplo? Consegue corrigir e enviar um PR?

Boa Tarde Faio! Realmente acho que estava com uma versão antiga. Refiz tudo do 0 aqui e aparentemente funcionou perfeitamente! Como faço para colaborar com você? Parabéns!

faio commented 3 years ago

Boa noite faio, tudo bem? percebi que a a conversão não esta ignorando ; dentro das quotes, tem como corrigir isso? em dado momento, ele se perde e joga colunas fora de lugar.. Obrigado, belíssimo trabalho!

Bom dia Bruno, estou bem e você? Man, eu vi isso na ultima conversão que executamos aqui, fiz uma correção no dia 18 e não vi mais problemas com isso, inclusive adicionei uma validação de quantidade de colunas para evitar erros quanto a isso, mesmo com esses problemas está havendo erros na migração? Tem exemplo? Consegue corrigir e enviar um PR?

Boa Tarde Faio! Realmente acho que estava com uma versão antiga. Refiz tudo do 0 aqui e aparentemente funcionou perfeitamente! Como faço para colaborar com você? Parabéns!

Show!

A ideia é crescer o projeto, tornar o mesmo mais robusto, preciso adicionar testes, melhorar a questão de processos pararelos, melhorar o desempenho, o que você fizer que acha que pode agregar ao projeto manda um PR ou uma sugestão que vamos tratando e adicionando ao projeto.

leandroribeironh commented 3 years ago

Boa noite faio, tudo bem? percebi que a a conversão não esta ignorando ; dentro das quotes, tem como corrigir isso? em dado momento, ele se perde e joga colunas fora de lugar.. Obrigado, belíssimo trabalho!

Bom dia Bruno, estou bem e você? Man, eu vi isso na ultima conversão que executamos aqui, fiz uma correção no dia 18 e não vi mais problemas com isso, inclusive adicionei uma validação de quantidade de colunas para evitar erros quanto a isso, mesmo com esses problemas está havendo erros na migração? Tem exemplo? Consegue corrigir e enviar um PR?

Boa Tarde Faio! Realmente acho que estava com uma versão antiga. Refiz tudo do 0 aqui e aparentemente funcionou perfeitamente! Como faço para colaborar com você? Parabéns!

Bom dia! infelizmente acho que tem algo errado, ou eu não soube verificar a causa:

Getting 'estabelecimentos' table structure ...
Total records: 96843238
leandroribeironh commented 3 years ago

Uma coisa também que venho fazendo principalmente na tabela de estabelecimentos e que leva bastante tempo é criar uma trigger inserindo um campo chamado cnpj_full concatenando os 3 campos de cnpj. Existe como inserir triggers no código de conversão direto? acho que criando uma eu consigo criar as outras que precisaria usando como exemplo... peguei este exemplo na internet: mas com meu baixo conhecimento na linguagem não consegui evoluir muito... https://stackoverflow.com/questions/30495463/add-trigger-to-sqlalchemy-base-class

faio commented 3 years ago

Boa noite faio, tudo bem? percebi que a a conversão não esta ignorando ; dentro das quotes, tem como corrigir isso? em dado momento, ele se perde e joga colunas fora de lugar.. Obrigado, belíssimo trabalho!

Bom dia Bruno, estou bem e você? Man, eu vi isso na ultima conversão que executamos aqui, fiz uma correção no dia 18 e não vi mais problemas com isso, inclusive adicionei uma validação de quantidade de colunas para evitar erros quanto a isso, mesmo com esses problemas está havendo erros na migração? Tem exemplo? Consegue corrigir e enviar um PR?

Boa Tarde Faio! Realmente acho que estava com uma versão antiga. Refiz tudo do 0 aqui e aparentemente funcionou perfeitamente! Como faço para colaborar com você? Parabéns!

Bom dia! infelizmente acho que tem algo errado, ou eu não soube verificar a causa:

Getting 'estabelecimentos' table structure ...
Total records: 96843238
  • Verifiquei por um cnpj e veio duplicado. o script inseriu 2x os dados nesta tabela, quando faco conversao para postgresql. Estou usando a ultima vesrao. Aconteceu para mais alguem?

Os dados de cnpj (raiz) nessa base são duplicados mesmo, um cnpj é formado pela raiz + filial + digito verificador, a raiz se repete, raiz + filial não.

Quanto ao erro de estrutura aqui funcionou corretamente, já usei no postgres 11, 12 e 13 e no sqlite3, tudo funcionou corretamente, pode ser algum problema ai local, tenta pegar melhores informações sobre o erro vendo os demais detalhes e corrigir os mesmos.

faio commented 3 years ago

Uma coisa também que venho fazendo principalmente na tabela de estabelecimentos e que leva bastante tempo é criar uma trigger inserindo um campo chamado cnpj_full concatenando os 3 campos de cnpj. Existe como inserir triggers no código de conversão direto? acho que criando uma eu consigo criar as outras que precisaria usando como exemplo... peguei este exemplo na internet: mas com meu baixo conhecimento na linguagem não consegui evoluir muito... https://stackoverflow.com/questions/30495463/add-trigger-to-sqlalchemy-base-class

Você pode alterar o script como quiser e criar uma nova coluna fazendo isso, pode fazer também uma view, dependendo do SGBD criar uma coluna calculável/virtual ou fazer um insert após a conversão em uma nova coluna concatenando tudo, não irei fazer pois não é objetivo do projeto e a mesma é desnecessária ao meu ver. Vou encerrar esse issue, os tópicos já estão muito bagunçado, qualquer coisa, abre outro issue com um assunto novo, o assunto inicial dessa issue já se perdeu a muito tempo.