Opa, muito obrigado pela ajuda William, Osvaldo, Jota e Emerson.

2008/6/2 William Leite Araújo <[EMAIL PROTECTED]>:

>    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
>
>


-- 
Á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

Responder a