Estoy tratando de volcar algunas tablas de un 9.5 beta 2 a un servidor 9.4.4. La forma del comando que estoy usando es bastante estándar:
pg_dump -t table dbname | psql -h hostname -d dbname
Estoy usando el usuario de Postgres, lo que me doy cuenta de que probablemente no sea lo ideal, pero como estos son cuadros de procesamiento de datos de desarrollo que solo yo uso y es relevante para el error que sigue. Inicialmente recibí el error
ERROR: parámetro de configuración no reconocido "fila_seguridad"
lo cual se espera ya que esta característica es nueva en 9.5, y, sí, me doy cuenta de que no es aconsejable pg_dump entre diferentes versiones de Postgres, pero, lamentablemente, es inevitable, dado que he encontrado un error muy oscuro y necesito mover un gran cantidad de datos estáticos una vez.
Entonces, usando este horrible truco para eliminar el error row_security, y activando stop en el primer error:
pg_dump -t tablemame dbname |sed 's/SET row_security = off;//'|
psql -v ON_ERROR_STOP=1 -h hostname -d dbname
Ahora obtengo:
ERROR: permiso denegado para crear "pg_catalog.tablename" DETALLE: las modificaciones del catálogo del sistema están actualmente prohibidas
Si bien puede ser indeseable usar el rol / usuario de Postgres, entiendo que no debería haber problemas de permisos de esta naturaleza. Estoy abierto a cualquier sugerencia teniendo en cuenta que esta es una operación única y que estos son cuadros de desarrollo de procesamiento de datos que no están conectados a ningún servicio en vivo, por lo que se prefiere la conveniencia a las políticas ideales de acceso a datos corporativos. Dicho esto, sería bueno entender cómo hacer esto correctamente y evitarlo en el futuro.