Backup postgreSQL por meio de código java [RESOLVIDO]

10 respostas
fredsilva.sistemas
Olá galera! Tô querendo implementar um backup por meio de código java, mas tá meio complicado. O arquivo de backup é gerado com tamanho de 0kb, ou seja, não tem nada dentro dele. O que será que estou fazendo de errado?
public void realizaBackup() throws IOException {
        Runtime r = Runtime.getRuntime();
        try {
            Process p = r.exec("\"C:\\Arquivos de programas\\PostgreSQL\\8.3\\bin\\pg_dump.exe\" -i -h localhost -p 5432 -U postgres -F c -b -v -f \"C:\\backup3\\teste.backup\" superAdmin");
            if (p != null) {
                OutputStream outputStream = p.getOutputStream();
                outputStream.write("senha\r\n".getBytes());
                outputStream.flush();
                outputStream.close();
                InputStreamReader streamReader = new InputStreamReader(p.getErrorStream());
                BufferedReader reader = new BufferedReader(streamReader);
                String linha;
                while ((linha = reader.readLine()) != null) {
                    System.out.println(linha);
                }
            }
            JOptionPane.showMessageDialog(null, "Backup realizado com sucesso!", "Aviso", JOptionPane.INFORMATION_MESSAGE);
        } catch (IOException ex) {
            JOptionPane.showMessageDialog(null, "Erro ao tentar realizar o backup!\n"+ex.getMessage(), "Erro", JOptionPane.ERROR_MESSAGE);
        }

public static void main(String args[]) throws IOException{
        Backup b = new Backup();
        b.realizaBackup();

    }
Agradeço a ajuda! T+

10 Respostas

luiz.portnoy

Cara, tive dor de cabeça com isso…
Você vai ter que criar um bat com o comando e a senha do postgresql e chamar o bat no java.

fredsilva.sistemas

luiz.portnoy:
Cara, tive dor de cabeça com isso…
Você vai ter que criar um bat com o comando e a senha do postgresql e chamar o bat no java.

E como eu faria isso?
Valeu pela força!

luiz.portnoy

Crie um arquivo no notepad e coloque a linha de comando do pg_dump. Na outra linha, sua senha. Salve com a extensão .bat . Lá na sua aplicação java. no comando Runtime.exec chame esse arquivo .bat.

Espero ter ajudado

fredsilva.sistemas

luiz.portnoy:
Crie um arquivo no notepad e coloque a linha de comando do pg_dump. Na outra linha, sua senha. Salve com a extensão .bat . Lá na sua aplicação java. no comando Runtime.exec chame esse arquivo .bat.

Espero ter ajudado


Coloquei conforme vc falou, mas acontece um erro:
Código do arquivo .bat

C:\Arquivos de programas\PostgreSQL\8.3\bin\pg_dump.exe -h localhost -p 5432 -U postgres -F p -a -v -f "D:\backup Postgresql\superAdmin\backup_teste 18_05_2010.backup" "superAdmin"
sefaz##2009

Erro
[color=red]A sintaxe do nome do arquivo, pasta ou nome do volume est� incorreta.
’‘sefaz##2009’’ n�o � reconhecido como um comando interno
ou externo, um programa oper�vel ou um arquivo em lotes.
[/color]

fredsilva.sistemas

Alguém tem o script de backup do PostgreSQL em java?

luiz.portnoy

Faz o seguinte:

Na primeira linha coloque assim:

SET PGPASSWORD=Sua Senha

Na outra linha:

comando do pg_dump

L

Ja tentou executar este comando no dos ? deu erro ou não

fredsilva.sistemas

luiz.portnoy, tentei o que vc me falou, mas não deu certo!
labavel, este comando é o mesmo gerado pelo postgreSQL, quando eu faço backup pela ferramenta visual, então na teoria era para funcionar!
T+

luiz.portnoy

Cara, dá uma olhadinha nesse post, foi nele que eu me baseei:

http://www.guj.com.br/posts/list/82388.java

fredsilva.sistemas
luiz.portnoy:
Cara, dá uma olhadinha nesse post, foi nele que eu me baseei: http://www.guj.com.br/posts/list/82388.java
[editando.... Ficou assim o meu arquivo .bat
set PGUSER=usuario
set PGPASSWORD=minhasenha
  
for /f "tokens=1,2,3,4 delims=/ " %%a in ('DATE /T') do set Date=%%b-%%c-%%d  
  
C:\Arquiv~1\Postgr~1\8.3\bin\pg_dump.exe -i -h localhost -p 5432 -U postgres -F c -b -o -v -f "D:\backup Postgresql\superAdmin\superAdminBackup%Date%.backup" superAdmin
]

Blz Luiz, funcionou perfeitamente!!!
Obrigado a todos pela ajuda!
T+

Criado 18 de maio de 2010
Ultima resposta 19 de mai. de 2010
Respostas 10
Participantes 3