radar icon indicating copy to clipboard operation
radar copied to clipboard

#465 - Gerando dump com comando python dumpdata em json

Open lopes05 opened this issue 6 years ago • 10 comments

Utilizamos o comando dumpdata do django para fazer o dump em json, caso queiram testar fora do ambiente de produção, utilizar o comando:

sudo docker-compose exec django python manage.py runcrons cron.jobs.DbDumperJob --force

Co-authored-by: Felipe Osório [email protected] Co-authored-by: Harrison Pedro [email protected]

lopes05 avatar May 16 '18 19:05 lopes05

Pull Request Test Coverage Report for Build 981

  • 0 of 0 changed or added relevant lines in 0 files are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage remained the same at 82.054%

Totals Coverage Status
Change from base Build 978: 0.0%
Covered Lines: 3923
Relevant Lines: 4781

💛 - Coveralls

coveralls avatar May 16 '18 20:05 coveralls

Aliás, aproveitando, caso vocês alterem o código, gostaria de pedir que removam a classe duplicada que está no source (sei que não foram vocês que adicionaram a duplicação, mas se perceberem esse tipo de melhoria que pode ser feita não "se avexem" em fazê-la!)

diraol avatar May 16 '18 23:05 diraol

Já retiramos a classe duplicada, vamos dar uma olhada na documentação para utilização de possíveis parâmetros.

lopes05 avatar May 16 '18 23:05 lopes05

Ops, malz pela classe duplicada!

Mas acho q essa estratégia de gerar o dump como um json do Django não é uma boa.

[O pessoal da UnB não tinha como saber, mas] um dos objetivos do dump é permitir que outras pessoas possam importar o banco em suas máquinas e explorar os dados com SQL. Já é muito pedir pra que usem o PostgreSQL (idealmente o dump deveria ser um SQL padrão, importável em qualquer banco SQL), mas fazer com que a reimportação dependa do Python/Django aí piora a situação.

Talvez isso possa ser rebatido com algo tipo "oh, mas é fácil importar json -> banco usando XYZ", mas aí teríamos que saber isso e incluir essas instruções na página http://radarparlamentar.polignu.org/dados/downloads/. Mas a princípio defendo que o dump continue sendo em formato SQL.

leonardofl avatar May 17 '18 00:05 leonardofl

Ok, vamos pensar na estratégia de manter o SQL então.

lopes05 avatar May 17 '18 00:05 lopes05

@leonardofl acho que vale usar o dump em json e depois só convertê-lo para o formato que queremos.

Podemos usar o CSVKit para fazer as transformações desejadas. (json -> csv; csv -> sql; -> csv -> postgesql)

Independente disso, acho que precisamos definir quais dados queremos exportados e "em que formato" (no sentido de: queremos tabelas de relacionamento? Queremos PKs? etc).

diraol avatar May 17 '18 01:05 diraol

Quais dados: todas das tabelas com prefixo "modelagem".

Em q formato: por mim, sql, mantendo chaves primárias, relacionamentos etc (constrains não são necessárias).

leonardofl avatar May 17 '18 15:05 leonardofl

Para podermos gerar um arquivo SQL, acho que vai ser necessário ter o postgres no container base, para podermos assim usar o pg_dump e de alguma forma contornar o erro antigo que foi relatado na issue.

lopes05 avatar Jun 01 '18 01:06 lopes05

Modifiquei para criar com o comando pg_dump e SQL nesse último commit, pelo que testei está tudo OK.

lopes05 avatar Jun 05 '18 17:06 lopes05

Opa, faltou um arquivo, assim que tiver internet subo!

lopes05 avatar Jun 05 '18 19:06 lopes05