Olá erico_kl, tentei setar a senha como você falou;
Runtime.getRuntime().exec("set PGPASSWORD=senha");
Process p = Runtime.getRuntime().exec("C:\\Arquivos de programas\\PostgreSQL\\8.4\\bin\\pg_dump -c -b --column-inserts -E utf8 -h 192.168.170.1 -p 5432 -U postgres -F t -i -v -f c:\\backup.tar postgres");
mas deu o seguinte erro:
GRAVE: null
java.io.IOException: Cannot run program "set": CreateProcess error=2, O sistema não pode encontrar o arquivo especificado
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:431)
at java.lang.Runtime.exec(Runtime.java:328)
Olá rogelgarcia, acho que peguei a saída do .bat, fiz assim:
Process p = Runtime.getRuntime().exec(caminhoArquivoBat + "script_backup.bat");
String line;
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
Mas o que ele retornou foi só a seguinte linha:
C:\Documents and Settings\Atila\Meus documentos\NetBeansProjects\Sistema>pg_dump -c -b --column-inserts -E utf8 -h 127.0.0.1 -p 5432 -U postgres -F t -i -v -f C:\backup.tar banco
debug-single:
CONSTRUÍDO COM SUCESSO (tempo total: 3 segundos)
Também não deu certo.
Deixa eu explicar melhor a situação.
O servidor do banco de dados ficará em uma máquina remota, mas eu quero deixa a opção do usuário fazer o backup na aplicação ou seja na máquina que ele estiver, como eu não consigo acessar pg_dump e o pg_retore no servidor (salvo se tivesse uma aplicação rodando no servidor e trabalhasse com sockets), dai copiei a o pg_dump e o pg_restore com as respectivas dlls e coloquei em uma pasta ficando assim (como mostra a imagem “espero que de certo rsrs”):
E os arquivos script_backup.bat e script_restore.bat estão assim:
script_backup.bat
@echo off
set BACKUP_FILE=C:\backup.tar
set PGPASSWORD=senha
echo on
pg_dump -c -b --column-inserts -E utf8 -h 127.0.0.1 -p 5432 -U postgres -F t -i -v -f %BACKUP_FILE% banco
script_restore.bat
@echo off
set BACKUP_FILE=C:\backup.tar
set PGPASSWORD=senha
echo on
pg_restore -c -d banco -h 127.0.0.1 -p 5432 -U postgres -F t %BACKUP_FILE%
Esta pasta com os arquivos eu posso colocar ela em qualquer lugar (Desktop, Meus Documento, PenDrive), e quando eu dou dois cliques nos arquivos .bat eles fazem backup e restore respectivamente sem problemas; sendo o banco local ou remoto. E como eu falei, quando chamo o .bat dentro do java, da pau, não roda, e como ainda tinha falado anteriormente, no VB6 não tem esse problema, posso chamar o .bat que ele roda como se eu tivesse dado dois cliques nele.