2016-10-24 8 views
1

Я пытаюсь pg_dump определенные схемы из моей базы данных PSQL, размещенной в Heroku, в локальный файл.Автоматизация PG_DUMP базы данных PSQL на Heroku

Heroku предоставляет мне в виде

# postgres://username:[email protected]:port/database 
postgres://abcde:[email protected]:5762/riza3dj029012 

Исходя из изложенных выше DATABASE_URL я попытался демпингом некоторых схем -

> pg_dump --username=abcde --host=ec2-21-82-72-112.compute-1.amazonaws.com --port=5762 --dbname=riza3dj029012 --create --schema=my_schema --password > ~/pg_dump.dmp 
> password: (enter password) 

Есть ли способ, чтобы ввести пароль в качестве флага, так что я дон Не нужно вводить его вручную? Я хочу автоматизировать это в скрипте.

Я знаю, что --no-password существует, но не уверен, что это такое, потому что он просто запрещает запрашивать пароль, а затем аутентификация (очевидно) терпит неудачу.

Спасибо!

+2

ли вы пытаетесь сделать файл .pgpass a la https://www.postgresql.org/docs/9.5/static/libpq-pgpass.html или http://stackoverflow.com/questions/2893954/how-to-pass-in-password- к-пг-свалка? – eabates

+0

Это сделало это для меня, спасибо. Хотя это работает, это не идеально, потому что мне нужно создать файл с моими учетными данными на моей локальной машине. Если сценарий когда-либо терпит неудачу, файл 'pgpass' не очищается, моя локальная машина теперь имеет учетные данные производственной базы данных - действительно плохая практика безопасности, особенно в компаниях, которые проходят строгие проверки безопасности. Я хочу, чтобы PSQL вместо этого воспользовался паролем командной строки. – user2490003

ответ

1

Как указано в комментариях, вы можете создать файл .pgpass для этой цели. Более подробную информацию можно найти в официальной документации для Postgres: https://www.postgresql.org/docs/9.5/static/libpq-pgpass.html

Просто создайте файл с именем .pgpass в домашнем каталоге пользователя с таким количеством строк, сколько необходимо в следующем формате:

hostname:port:database:username:password