Tomei a liberdade de fazer alguns testes e aparentemente não ia ser tão
simples, então segue um codigo em java para você exportar suas imagens.
Não esqueça de baixar o driver jdbc[1].
Esse código usei baseado em um tutorial[2]
Execute dessa forma: java -cp postgresql-9.1-902.jdbc4.jar:. GravaImagem

Arquivo GravaImagem.java
----------------- INICIO ARQUIVO -------------
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class GravaImagem {
        public static void main(String[] args) {
                 Connection con = null;
        PreparedStatement pst = null;
        FileOutputStream fos = null;

        String url = "jdbc:postgresql://ip_servidor_postgres/base";
        String user = "seuusuarioaqui";
        String password = "suasenhaaqui";
        try {

            con = DriverManager.getConnection(url, user, password);

            String query = "SELECT nome_arquivo, arquivo, LENGTH(arquivo)
FROM tabela";
            pst = con.prepareStatement(query);

            ResultSet result = pst.executeQuery();
            while ( result.next() ) {

            fos = new FileOutputStream(result.getString("nome_arquivo"));

            int len = result.getInt(3);
            byte[] buf = result.getBytes("arquivo");
            fos.write(buf, 0, len);
            fos.close();
            }

        } catch (IOException | SQLException ex) {
            Logger lgr = Logger.getLogger(GravaImagem.class.getName());
            lgr.log(Level.SEVERE, ex.getMessage(), ex);

        } finally {

            try {
                if (pst != null) {
                    pst.close();
                }
                if (con != null) {
                    con.close();
                }
                if (fos != null) {
                    fos.close();
                }

            } catch (IOException | SQLException ex) {
                Logger lgr = Logger.getLogger(GravaImagem.class.getName());
                lgr.log(Level.WARNING, ex.getMessage(), ex);

            }
        }
        }
}
--------------------------- FIM DO ARQUIVO ----



[1] jdbc.postgresql.org
[2] http://zetcode.com/db/postgresqljavatutorial/
Bruno E. A. Silva.
Analista de Sistemas.



2012/7/27 Bruno Silva <[email protected]>

> Olha só, consultando a lista encontrei essa solução[1], pode ser que lhe
> atenda.
> Confesso que fiquei intrigado com o tamanho da base, 750G só de arquivos
> no banco?
> Talvez a melhor solução de backup para você seja replicar a base e fazer
> backups diferenciais dos archive_logs, alguém me corrija - e eu sei que vai
> acontecer - se eu estiver enganado.
> E mais, como está a performance do banco? Não se espante com minhas
> perguntas é que trabalho em uma empresa que usa um outro banco e disseram -
> DBA's ceritifcados - que o mesmo não suportaria mais de 900G de binários.
>
>
>
> [1] - http://postgresql.1045698.n5.nabble.com/campos-bytea-td2049981.html
> Bruno E. A. Silva.
> Analista de Sistemas.
> Bacharel em Sistemas de Informação
> Pós-graduando em Gerência de Projetos
> Certified Scrum Master
> LPIC-1
> SCJP, SE 6
> Novell CLA / DCTS ECR
> DBA Postgres
> -------------------------------
> “A caixa dizia: Requer MS Windows ou superior. Então instalei Linux.” -
> Sábio Desconhecido
> "Alguns prestam serviço/consultoria de Qualidade, os outros vendem
> licença!"
>
>
>
> 2012/7/27 Bruno Silva <[email protected]>
>
>> Mas Jota, a funçao lo_export não trabalha com bytea, ela lê o codigo de
>> referencia e exporta usando o tipo lo.
>>  Em 27/07/2012 17:18, "JotaComm" <[email protected]> escreveu:
>>
>> Olá,
>>>
>>> Em 27 de julho de 2012 16:20, SOUTO <[email protected]> escreveu:
>>>
>>>> Pessoal,
>>>>
>>>> Tenho uma tbl onde armazeno vários tipos de arquivos em um campo bytea.
>>>> O problema é a este campo está com 720 GB, impossível fazer bkp diário
>>>> disso então pensei no bkp diferencial (Outro problema que não sei 
>>>> resolver).
>>>> Então pensei em exportar o conteúdo deste campo para uma pasta no
>>>> server, e com isso conseguiria fazer um bkp diferencial diário pegando
>>>> apenas os arquivos que não tem na pata em epígrafe.
>>>> O problema é tentei utilizar a função  lo_export(bytea, text) e veja o
>>>> erro que me dá:
>>>>
>>>> SELECT
>>>> lo_export(arquivo,'/Diretório/'||idarquivos::VARCHAR||nome::VARCHAR) FROM
>>>>  schema.tabela WHERE idarquivos = 777;
>>>> ERRO:  função lo_export(bytea, text) não existe
>>>> LINHA 1: SELECT lo_export(arquivo,'/Diretório...
>>>>                 ^
>>>> DICA:  Nenhuma função corresponde com o nome e os tipos de argumento
>>>> informados. Você precisa adicionar conversões de tipo explí­citas.
>>>>
>>>
>>> postgres=# INSERT INTO tab VALUES
>>> (1,lo_import('/home/jmsilva/arquivo.log'));
>>> INSERT 0 1
>>> postgres=# SELECT * FROM tab;
>>>  codigo | arquivo
>>> --------+---------
>>>       1 |   16840
>>> (1 row)
>>>
>>> postgres=# SELECT lo_export(arquivo,'/tmp/arquivo.log') FROM tab WHERE
>>> tab.codigo=1;
>>>  lo_export
>>> -----------
>>>          1
>>> (1 row)
>>>
>>> postgres=#
>>>
>>> Qual versão de PostgreSQL você está utilizando?
>>>
>>>
>>>
>>>
>>>>
>>>> Ats
>>>>
>>>> Alguém teria uma dica/ajuda?
>>>> Fico no aguardo.
>>>>
>>>> --
>>>> Atenciosamente,
>>>>
>>>> Claudio Souto
>>>> (61) 9831-9381
>>>>
>>>> _______________________________________________
>>>> pgbr-geral mailing list
>>>> [email protected]
>>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>>
>>>>
>>>
>>> Abraços
>>> --
>>> JotaComm
>>> http://jotacomm.wordpress.com
>>>
>>> _______________________________________________
>>> 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

Responder a