Eu tambem rodo script enormes, nao grandes iguais ao seus, com 1 milhao 
de linhas, mas em torno de 100 mil linhas com varios inserts em cada 
linha. Eu sei os problemas que vc deve estar tendo pois trabalhar com 
arquivo texto desse tamanho não é a coisa mais facil... Para rodar esses 
scripts eu utilizo o PGadmin que, com certeza, nao foi feito para rodar 
scripts deste tamanho. Se eu nao me engano, ele faz justamente isso q vc 
qr, ele vai inserindo as linhas e dando commit ate onde der erro, nao 
precisando vc ter q rodar o script novamente. Uma outra alternativa 
seria para cada linha vc inserir um 'BEGIN;' no inicio e um 'COMMIT;' no 
final.

Espero ter ajudado, pelo menos em uma parte do seus problemas...


Fabio Henrique

Mozart Hasse escreveu:
> 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
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>   


                
_______________________________________________________ 
Yahoo! Mail - Sempre a melhor opção para você! 
Experimente já e veja as novidades. 
http://br.yahoo.com/mailbeta/tudonovo/
 

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a