Mozart; Não entendi exatamente o que seu procedimento faz, porém tenho um problema semelhante. Faço diariamente cargas de arquivos de texto em 160 tabelas e que somam mais de 1.900.000 linhas.
Se o seu problema é carregar dados, então posso compartilhar com você minha experiência. Após pesquisas na internet e testes com esta quantidade grande de informações lhe afirmo que as ferramentas visuais são mais lentas que os comandos rodados diretamente do console do seu banco. Para você ter idéia, a carga nestas 160 tabelas que somam mais de 1.900.000 linhas demorou apenas 1:54 ( um minuto e cinquenta e quatro *segundos* ). Eu uso o comando COPY alimentado por um arquivo com os dados somente; sem os INSERT. Para ter esta eficiência eu dropo a tabela, recrio-a, e faço o copy com o arquivo somente com os dados, após isto eu crio os índices; todo este procedimento está dentro do meu script. São tabelas de um mainframe IBM que eu transporto para o PostgreSQL diariamente; não tenho problemas ao dropar as tabelas, pois eu uso-as como cópias de segurança e não há nenhum sistema utilizando-as diretamente. Como cada caso é um caso, se seu problema é semelhante ao meu sugiro que você analise esta forma de carga de seus dados ( COPY tabelaSQL FROM '/home/minha_tabela.txt; ) ; para mim está funcionando perfeitamente. Ernesto Jorge Costa Martins Universidade Federal do Rio Grande - FURG Centro de Processamento de Dados 2008/12/11 Mozart Hasse <[email protected]> > 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 >
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
