2016-03-12 2 views
2

Я хочу создать резервную копию и восстановить базу данных postgresql с помощью pg_dump. Вопрос заключается в: В командной строке, когда я выполнить эту команду:Postgresql Резервное копирование и восстановление с использованием java с паролем

pg_dump -h localhost -p 5432 -U postgres -F t -f test2.tar myDatabase 

я получаю это prompet электронного письма ввести пароль базы данных:

Mot de passe : 

Таким образом, он работает

Но, в контексте java: Я могу делать только:

String cmd = "pg_dump -U postgres -h localhost -p 5342"; 
       cmd += " -F t -f " + file.getCanonicalPath(); 
       cmd += " myDatabase"; 
       Process p = Runtime.getRuntime().exec(cmd); 
       int result= p.waitFor(); 

if (result == 0) { 
        System.out.println("Backup created successfully"); 
       } else { 
        System.out.println("There is an error"); 
       } 

Приведенный выше код не работает. Итак, что я могу сделать, чтобы предоставить пароль базы данных во время выполнения?

ответ

2

С PostgreSQL документации о pg_dump:

-w

--no-пароль

Никогда не выдает запрос на ввод пароля. Если серверу требуется аутентификация по паролю, а пароль недоступен другими средствами, такими как файл .pgpass, попытка подключения завершится с ошибкой. Эта опция может быть полезна в пакетных заданиях и сценариях, где пользователь не вводит пароль.

Так вы можете попробовать также пропускание варианта -w на вашей команде pg_dump и обеспечить .pgpassfile с паролем?

Смежные вопросы