Я пытаюсь выполнить следующую команду:
sshpass -p "pass" ssh x@1.2.3.4 "pg_dump -Fc -U foo some_db" | pg_restore --create --dbname=new_db
Я получил:
failed: FATAL: database "new_db" does not exist
postgresql
postgresql-9.3
psql
andilabs
источник
источник
pg_restore
. Опция -C может создать только базу данных, имя которой совпадает с именем базы данных в файле дампа. Чтобы восстановить произвольную базу данных, вы должны запуститьCREATE DATABASE new_db;
psql перед запускомpg_restore --dbname=new_db
.docker-compose -p dump_import -f docker/dump_import.yml run --rm be bash -c 'waitforit -host=postgres -port=5432 -timeout=30 && export PGPASSWORD=$DATABASE_PASSWORD && createdb --echo --port=$DATABASE_PORT -host=$DATABASE_HOST --username=$DATABASE_USER $DATABASE_NAME && pg_restore --format=c --dbname=$DATABASE_URL_WITHOUT_QUERY tmp/full.dump && echo "Import done"'
Короче говоря, вы хотите (очистить существующий): (обратите внимание, имя базы данных
postgres
)или (создать новый)
или (создать новое явно)
Посмотрите, что сказал SCO для более подробной информации.
источник
pg_restore: [archiver] -C and -c are incompatible options
pg_restore -C -d postgres db.dump
может показаться пугающим, но он ничего не делает с базой данных postgres, он использует ее только для первоначального подключения.Чтобы быть более ясным, это то, что я сделал, чтобы решить эту проблему для меня:
Создайте пустую базу данных с нужным именем: (в моем случае имя пользователя было «postgres»)
Затем вам будет предложено ввести пароль. На этом этапе вы будете зарегистрированы как [имя пользователя]. Введите следующее:
Теперь выйдите из сеанса и вернитесь к своему обычному терминальному сеансу.
Восстановите базу данных из файла, для которого вы задали имя целевой базы данных как имя базы данных, которое вы только что создали.
Где [your_file_path / filename] - это местоположение файла БД или текстового файла, который вы хотите восстановить.
источник
-F
опции de вы должны использовать pg_restore для восстановления резервной копии, если только вы не используете,-F p
которая создает простой текстовый файл с предложениями sql.