Я использую Postgres на Heroku, и мне нужно сбрасывать одну таблицу из моей производственной БД и выгружать ее в мою промежуточную БД. У меня установлен набор инструментов heroku, но я не уверен, как сбросить одну таблицу db для импорта в мою промежуточную базу.
Postgres на Heroku и сброс одиночной таблицы в файл дампа
Ответ 1
Вы можете сбросить одну таблицу данных следующим образом:
$ pg_dump --no-acl --no-owner -h [host ip].compute-1.amazonaws.com -U [user name] -t [table name] --data-only [database name] > table.dump
Вы можете получить все необходимые значения:
$ heroku pg:credentials:url [DATABASE] -a [app_name]
Connection info string:
"dbname=[database name] host=[host ip].compute-1.amazonaws.com port=5432 user=[user name] password=[password] sslmode=require"
Connection URL:
postgres://[username]:[password]@[host ip].compute-1.amazonaws.com:5432/[database name]
Это даст вам пароль. Введите его, и затем вы должны перейти к файлу table.dump
на вашем локальном диске.
Вероятно, вы хотите усечь таблицу при постановке:
$ echo "truncate [table];" | heroku pg:psql [DATABASE] -a staging_app
С этим файлом вы можете использовать psql
с выходом Connection URL:
нового вызова pg:credentials
для промежуточного приложения и восстановить только эту таблицу.
$ psql "[pasted postgres:// from pg:credentials:url of staging app]" < table.dump
SET
SET
...
...
...
...
$
Ответ 2
@catsbys answer
Мне также нужно было добавить порт
pg_dump --no-acl --no-owner -h [host ip].compute-1.amazonaws.com -p [port] -U [имя пользователя] -t [имя таблицы] - только для данных [имя базы данных] > table.dump
Ответ 3
Взгляните на краны (db:pull
), ваш случай использования покрывается этим ответом на вопрос, я полагаю.