Estoy tratando de ejecutar el siguiente comando:
sshpass -p "pass" ssh x@1.2.3.4 "pg_dump -Fc -U foo some_db" | pg_restore --create --dbname=new_db
Yo obtengo:
failed: FATAL: database "new_db" does not exist
postgresql
postgresql-9.3
psql
andilabs
fuente
fuente
pg_restore
. La opción -C solo puede crear una base de datos cuyo nombre coincida con el nombre de la base de datos en el archivo de volcado. Para restaurar a una base de datos arbitraria, debe ejecutarCREATE DATABASE new_db;
en psql antes de ejecutarpg_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"'
En resumen, desea cualquiera (limpiar existente): (tenga en cuenta que el nombre de la base de datos es
postgres
)o (crear nuevo)
o (crear nuevo explícitamente)
Vea lo que dijo SCO para más detalles.
fuente
pg_restore: [archiver] -C and -c are incompatible options
pg_restore -C -d postgres db.dump
puede parecer aterrador, pero no hace nada a la base de datos de postgres, solo lo usa para la conexión inicial.Para ser un poco más explícito, esto es lo que hice que resolvió el problema para mí:
Cree una base de datos vacía con el nombre que desee: (en mi caso, el nombre de usuario era 'postgres')
Luego le pedirá su contraseña. En este punto, iniciará sesión como [nombre de usuario]. Escriba lo siguiente:
Ahora salga de la sesión y regrese a su sesión regular de terminal.
Restaure la base de datos desde el archivo que tiene configurando el nombre de la base de datos de destino como el nombre de la base de datos que acaba de crear.
Donde [your_file_path / filename] es la ubicación del archivo db o archivo de texto que desea restaurar.
fuente
-F
opción de, debe usar pg_restore para restaurar la copia de seguridad, a menos que use una-F p
que produzca un archivo de texto sin formato con frases sql.