fmz galera ?
como q eu faco o backup e restaração do sistema no PostgreSQL ???
valeu
fmz galera ?
como q eu faco o backup e restaração do sistema no PostgreSQL ???
valeu
Olá amigo…
Eu precisei muito disso também, e demorei para conseguir fazer.
Ai está a classe para fazer o backup:
public class Backup {
public void realizaBackup(){
Runtime r = Runtime.getRuntime();
try{
Process p = r.exec(" \"C:\\Arquivos de programas\\PostgreSQL\\8.0\\pgAdmin III\\pg_dump.exe\" -i -h localhost -p 5432 -U user -F c -b -v -f \"C:\\backup\\bancodados.backup\" seubanco");
if(p != null){
OutputStream outputStream = p.getOutputStream();
outputStream.write("suasenha\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);
}
} catch(IOException ioe){
ioe.printStackTrace();
}
}
}
Uma breve exlicação do código acima:
Eu testei no windows, em outro sistema operacional acredito que deve-se mudar dentro de r.exec();
Se executar a linha que está dentro do método r.exec("") no prompt do DOS, ele fica pedindo “Passord:”, até não informar a senha do usuário que você DEVE passar no comando executado como “-U seuusuario”, ele fica ali parado.
Ao executar pelo java, acontece o mesmo, e você deve informar a senha do usuario que foi especificado na linha acima. Como o método r.exec(""); retorna um Process é através dele que conseguimos “enviar uma mensagem” para o DOS informando a senha especificamente no código:
OutputStream outputStream = p.getOutputStream();
outputStream.write("suasenha\r\n".getBytes());
outputStream.flush();
outputStream.close();
Na parte do código
InputStreamReader streamReader = new InputStreamReader( p.getErrorStream() );
BufferedReader reader = new BufferedReader( streamReader );
String linha;
while( (linha = reader.readLine()) != null )
System.out.println(linha);
O método getErrorStream() da classe Process, retorna um possível erro que pode ocorrer, você pode usar também o método getInputStream().
Espero ter ajudado.
Olá amigo, sei que o post é bem antigo, mas estou com dificuldades em passar a senha do banco.
Mesmo passando a senha pela linha
outputStream.write("postgres".getBytes());
E finalizando a criação do arquivo de bkp do banco, ele apresenta erro na restauração.
Estou usando o linux, tem alguma diferença??
Valeu.
veja que na linha 5 onde ele passa o path para o Process ele coloca o path completo para o pg_dump no windows
no seu caso (Linux), tira o “C;/…” até o pg_dump deve funcionar (se o pg_dump estiver no PATH, geralmente está)
caso não esteja utiliza os comando wich pg_dump ou então whereis pg_dump para descobrir o path completo