Muito bem. Caso ainda esteja com o problema, converta o arquivo de backup
para o modo texto, usando o pg_restore sem especificar o banco de dados, mas
um arquivo, por exemplo :

 pg_restpres -F c [arquivo de backup] > novo_arquivo.sql


    Em seguida, use o psql...

2008/5/29 jota. comm <[EMAIL PROTECTED]>:

> Olá, Álvaro
>
> Quando o parâmetro tiver setado para ON, ele ignora os erros e continua a
> sua transação sem abortar (rollback) o processo. Isso funciona em uma sessão
> interativa (psql). Interativo neste caso refere-se a sessão e não um valor
> para o parâmetro. Quando a execução ocorre a partir de um arquivo isso não
> acontece e o erro não é ignorado (acontece rollback) como ocorre na sessão.
>
>
> Espero ter ajudado.
>
> []s
>
>
>
> 2008/5/29 Álvaro Guimarães <[EMAIL PROTECTED]>:
>
>> Relendo a man page...
>>
>> ON_ERROR_ROLLBACK
>>>               When on, if a statement in  a  transaction  block
>>> generates  an
>>>               error,  the error is ignored and the transaction continues.
>>> When
>>>               interactive, such errors are only ignored  in  interactive
>>> ses-
>>>               sions,  and  not  when  reading  script  files.
>>
>> Quando setado como "ON", quando uma declaração num bloco de transação
>> gerar um erro, o erro vai ser ignorado e a transação vai continuar. Quando
>> setado como "interactive" os erros só serão ignorados numa sessão
>> interativa, e não lendo scripts.
>>
>> Ou seja, o tal do ON_ERROR_ROLLBACK era pra funcionar dando um \i dentro
>> do psql.
>> Não sei o que fazer. :(
>>
>>
>>
>> 2008/5/29 jota. comm <[EMAIL PROTECTED]>:
>>
>>> Olá,
>>>
>>> Por padrão os backups são gerados com copy, a menos que você informe o
>>> parâmetro -d para usar insert.
>>> Até onde sei não tem como fazer com o que o copy não aborte a transação
>>> inteira.
>>>
>>>
>>> []s
>>>
>>> 2008/5/29 Álvaro Guimarães <[EMAIL PROTECTED]>:
>>>
>>>> Meu backup é gerado com pg_dump -Fc que no manual ta falando que é uma
>>>> forma comprimida de backup. Então no caso o -Fc tá gerando backups com 
>>>> COPY.
>>>> Seria isso né?
>>>> E será que tem como fazer com que o COPY não aborte a transação inteira?
>>>>
>>>>
>>>> 2008/5/29 jota. comm <[EMAIL PROTECTED]>:
>>>>
>>>>> Olá, Álvaro
>>>>>
>>>>> Uma sessão interativa é uma sessão psql, por exemplo:
>>>>>
>>>>> Se eu digitar: psql meu_banco eu abro uma sessão interativa para o
>>>>> banco meu_banco.
>>>>>
>>>>> O seu backup é feito com o comando copy? Se for feito com o copy e um
>>>>> erro for gerado ele aborta toda a transação, e isso implica que a sua 
>>>>> tabela
>>>>> não sera carregada.
>>>>>
>>>>> Espero ter ajudado.
>>>>>
>>>>> []s
>>>>>
>>>>> 2008/5/29 Álvaro Guimarães <[EMAIL PROTECTED]>:
>>>>>
>>>>> Meu problema em usar o pg_restore é o mesmo.
>>>>>> Não quero rollback caso retorne erros e pelo que li ele não usa as
>>>>>> variáveis do psql.
>>>>>> Desculpe minha ignorancia. O que exatamente seria uma sessão
>>>>>> interativa?
>>>>>> Meu problema é que eu perco os dados de uma tabela inteira no backup
>>>>>> porquê se uma instrução gerar um erro o postgresql da rollback nela. O
>>>>>> script continua rodando depois disso então o ON_ERROR_STOP não é a 
>>>>>> solução
>>>>>> do meu problema.
>>>>>>
>>>>>> Muito obrigado pelas respostas imediatas.
>>>>>>
>>>>>>
>>>>>> 2008/5/29 jota. comm <[EMAIL PROTECTED]>:
>>>>>>
>>>>>>> Olá, Álvaro e Émerson
>>>>>>>
>>>>>>> Corrigindo a minha resposta:
>>>>>>>
>>>>>>> Segundo a documentação:
>>>>>>> ON_ERROR_ROLLBACK
>>>>>>>
>>>>>>> When on, if a statement in a transaction block generates an error,
>>>>>>> the error is ignored and the transaction continues. When interactive,
>>>>>>> such errors are only ignored in interactive sessions, and not when 
>>>>>>> reading
>>>>>>> script files. When off (the default), a statement in a transaction
>>>>>>> block that generates an error aborts the entire transaction. The
>>>>>>> on_error_rollback-on mode works by issuing an implicit SAVEPOINT for
>>>>>>> you, just before each command that is in a transaction block, and rolls 
>>>>>>> back
>>>>>>> to the savepoint on error.
>>>>>>> Isto significa que os erros são apenas ignorados com
>>>>>>> ON_ERROR_ROLLBACK ON em sessões interativas e não quando são lidas de um
>>>>>>> arquivo de script.
>>>>>>>
>>>>>>> Neste caso você pode tentar usar o ON_ERROR_STOP, mas como comentei
>>>>>>> no e-mail anterior nunca usei com em bloco de transação com BEGIN e 
>>>>>>> COMMIT
>>>>>>> em um arquivo de script, então precisaria ser testado.
>>>>>>>
>>>>>>> Espero ter ajudado.
>>>>>>>
>>>>>>> []s
>>>>>>>
>>>>>>> 2008/5/29 jota. comm <[EMAIL PROTECTED]>:
>>>>>>>
>>>>>>> Olá,
>>>>>>>>
>>>>>>>> Para recuperar backup binário você precisa usar o pg_restore, com o
>>>>>>>> comando psql não é possível.
>>>>>>>>
>>>>>>>> Nunca usei este parâmetro, existe um parâmetro chamado ON_ERROR_STOP
>>>>>>>> que você pode habilitar ON ou OFF, quando ON se um comando gerar um 
>>>>>>>> erro ele
>>>>>>>> aborta o processo, caso OFF ele executará todo o procedimento 
>>>>>>>> ignorando os
>>>>>>>> erros. Nunca usei com transação então não sei se funcionará, acredito 
>>>>>>>> que
>>>>>>>> deve ser melhor usar o ON_ERROR_ROLLBACK.
>>>>>>>>
>>>>>>>> E quanto ao parâmetro ON_ERROR_ROLLBACK para continuar uma transação
>>>>>>>> quando um erro é gerado deve estar setado como ON, conforme a 
>>>>>>>> documentação:
>>>>>>>> http://www.postgresql.org/docs/current/static/app-psql.html
>>>>>>>>
>>>>>>>> Espero ter ajudado.
>>>>>>>>
>>>>>>>> []s
>>>>>>>>
>>>>>>>> 2008/5/29 Emerson Casas Salvador <[EMAIL PROTECTED]>:
>>>>>>>>
>>>>>>>>>  Álvaro Guimarães escreveu:
>>>>>>>>>
>>>>>>>>> Olá lista.
>>>>>>>>>
>>>>>>>>> Preciso restaurar um backup que está gerando alguns erros. Porém eu
>>>>>>>>> preciso que esses erros sejam ignorados e que o rollback *não* seja
>>>>>>>>> executado.
>>>>>>>>> Estou tentando o seguinte dentro do utilitário psql:
>>>>>>>>>
>>>>>>>>> banco=# \set ON_ERROR_ROLLBACK on
>>>>>>>>> banco=# \i backup.sql
>>>>>>>>>
>>>>>>>>> Porém o rollback é executado quando erros são encontrados.
>>>>>>>>> Versão do postgresql é a *O Sistema Anti-Vírus detectou tentativa
>>>>>>>>> de fraude de "8.1.9." * 8.1.9. <http://8.1.9.>
>>>>>>>>> Sistema Operacional é o Fedora Core 6.
>>>>>>>>>
>>>>>>>>> Segundo o man psql isso era pra funcionar.
>>>>>>>>>
>>>>>>>>> ON_ERROR_ROLLBACK
>>>>>>>>>>               When on, if a statement in  a  transaction  block
>>>>>>>>>> generates  an
>>>>>>>>>>               error,  the error is ignored and the transaction
>>>>>>>>>> continues.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Outra dúvida aproveitando a mesma mensagem.
>>>>>>>>> Há a possibilidade de restaurar backups binários pelo utilitário
>>>>>>>>> psql?
>>>>>>>>>
>>>>>>>>> Agradeço desde já.
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Álvaro Guimarães
>>>>>>>>> Santa Bárbara D'Oeste - SP - Brazil
>>>>>>>>>
>>>>>>>>> Pois é... mas ali vc ta dizendo
>>>>>>>>> banco=# \set ON_ERROR_ROLLBACK *on
>>>>>>>>> *
>>>>>>>>> não seria:
>>>>>>>>> banco=# \set ON_ERROR_ROLLBACK *off *
>>>>>>>>> ?
>>>>>>>>>
>>>>>>>>> nunca usei isso, mas testa aí...
>>>>>>>>>
>>>>>>>>> -------------------------------------------------------------------------------------
>>>>>>>>>
>>>>>>>>> Esta mensagem foi verificada pelo sistema de Anti-virus da SJB
>>>>>>>>> Solados.
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> pgbr-geral mailing list
>>>>>>>>> [email protected]
>>>>>>>>>
>>>>>>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> João Paulo
>>>>>>>> www.dextra.com.br/postgres
>>>>>>>> PostgreSQL
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> João Paulo
>>>>>>> www.dextra.com.br/postgres
>>>>>>> PostgreSQL
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> pgbr-geral mailing list
>>>>>>> [email protected]
>>>>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Álvaro Guimarães
>>>>>> Depto. de T.I.
>>>>>> Microwork Softwares
>>>>>> _______________________________________________
>>>>>> pgbr-geral mailing list
>>>>>> [email protected]
>>>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> João Paulo
>>>>> www.dextra.com.br/postgres
>>>>> PostgreSQL
>>>>>
>>>>> _______________________________________________
>>>>> pgbr-geral mailing list
>>>>> [email protected]
>>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Álvaro Guimarães
>>>> Depto. de T.I.
>>>> Microwork Softwares
>>>>
>>>> _______________________________________________
>>>> pgbr-geral mailing list
>>>> [email protected]
>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>
>>>>
>>>
>>>
>>> --
>>> João Paulo
>>> www.dextra.com.br/postgres
>>> PostgreSQL
>>>
>>> _______________________________________________
>>> pgbr-geral mailing list
>>> [email protected]
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>>
>>
>>
>> --
>> Álvaro Guimarães
>> Depto. de T.I.
>> Microwork Softwares
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
>
> --
> João Paulo
> www.dextra.com.br/postgres
> PostgreSQL
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>


-- 
William Leite Araújo
Analista de Banco de Dados - QualiConsult
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a