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