Preâmbulo da pergunta:

Tenho o problema frequente de rodar scripts monstruosamente grandes (um
milhão de comandos SQL separados por ponto-e-vírgula) com frequência. O
problema é que pode ocorrer um erro láááááá no meio dele e aí eu
preciso retomar daquele ponto e só então continuar com os comandos
subsequentes. Meus requisitos:

1. A estação roda Windows, conecta-se ao servidor que é necessariamente
outra máquina e tem pouca memória. Não, eu não estou interessado em
soluções que precisem de alguns gigas de RAM nem usem outro sistema
operacional.

2. Recortar e colar um texto desse tamanho em um programa qualquer detona
minha estação, assim como simplesmente mostrar este texto na tela. Quero um
programa que leia sequencialmente cada comando do script a partir de um
arquivo e descarte-o da memória assim que executar com sucesso.

3. Carregar um arquivo desse tamanho é demorado porque consome toda a
memória da estação (a área de transferência do Windows consome toda a
memória virtual com um texto desse tamanho). Quero um programa inteligente o
bastante para colocar na memória apenas o necessário durante a execução.

4. QUANDO acontece um erro, eu quero retomar do ponto onde o erro ocorreu, e
não recomeçar tudo porque estava no meio da mesma transação. Ou seja,
quero ter a opção de rodar cada comandinho do script dentro de uma
transação.

5. QUANDO acontecer um erro, eu também quero que ele PARE, dê COMMIT no que
funcionou até esse ponto e nem tente rodar os comandos subsequentes.

6. Caso não seja possível abortar em caso de erro, eu queria poder olhar o
resultado do script enquanto o programa manda os comandos para o banco, e
abortar caso encontre algum aviso comprometedor. O problema é que, como o
script é grande, o resultado do script também é grande e por si só já
detona a memória da máquina. Eu não quero esperar ele rodar o script
inteirinho para só depois abrir o arquivo de LOG e descobrir que ele não fez
nada porque deu erro de sintaxe no segundo comando.

Isso não tem necessariamente a ver com Postgres, apesar de ser muito bom
saber se há alguma ferramenta que faça isso conectando com ele.

Pois é, então finalmente a pergunta é: 


Alguém conhece algum programa que faça isso ou algo parecido??


Atenciosamente,


Mozart Hasse


_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a