Antes que o Dutra me mate, desculpem, é que me empolguei, eu devia ter
colado o código no pastebin.

Bruno E. A. Silva.
Analista de Sistemas.


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

> 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