Pregunta

Estoy usando PostgreSQL (versión 9.3) en mi servidor y quiero actualizar los datos en mi base de datos de instancia de estadificación con los datos en mi base de datos de instancia de producción. Cada base de datos está controlada por un rol diferente, y quiero mantener sus privilegios separados en la transferencia.

Intenté seguir la documentación y corrió estos comandos con Mis usuarios separados (que tienen acceso a los roles PostgreSQL correspondientes):

staging-user: pg_dump production_db > prod_db_file
production-user: psql --single-transaction staging_db < prod_db_file

pero obtuve un par de errores: must be owner of extension plpgsql y syntax error at or near. Además, no estoy seguro de si esto hubiera hecho lo que quería de todos modos. Hay muchas banderas opcionales en los comandos PG_DUMP y PSQL, y no sé cuáles debería usarlo. (He intentado muchas combinaciones de banderas y nada ha funcionado hasta ahora).

NOTA: Cuando probé los comandos anteriores, mi base de datos de estadificación ya existió.

¿Cómo muevo mis datos de producción a mi base de datos de estadificación?

¿Fue útil?

Solución

ACTUALIZACIÓN 30 de octubre de 2015: esta respuesta es más sencilla y más precisa que mi antigua respuesta, que me quité por el bien de la brevedad.Para ver la vieja respuesta, eche un vistazo al historial de edición.

  1. como usuario de producción: pg_dump -Fc my_prod_db > prod_dump.db
  2. DROP y cree una base de datos de estadificación
  3. como usuario de la estadificación: pg_restore --no-owner --dbname my_staging_db path/to/prod_dump.db
Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top