pg_restore pg_dump example postgresql pg-dump pg-restore

postgresql - pg_dump - ¿Cómo convierto un pgdump binario(comprimido) a un archivo de SQL sin formato?



psql restore sql file (3)

Quiero buscar algunos datos dentro de un volcado de base de datos pero estos volcados utilizan el formato comprimido binario (encabezado PGDMP ).

¿Cómo puedo convertirlos a SQL sin restaurarlos?


El método más rápido que he usado fue:

pg_restore mybinaryfile.backup > mysqlfile.sql

No hay banderas especiales, ya que pg_restore simplemente lo escupe a la salida estándar.


Tenga en cuenta que si ejecuta varios clústeres, es posible que al comando de restauración no le guste la versión predeterminada ...

pg_restore: [archiver] versión no compatible (1.12) en el encabezado del archivo

En ese caso, debe especificar la versión, el host y el puerto como en:

pg_restore --cluster 9.1/localhost:5433 -f db.sql db.pgsql

(tenga en cuenta que el host:port información del host:port se ignora con la opción -f).

El puerto (5433) se puede determinar usando el comando pgsql como en:

pgsql --port 5433 template1

Cuando pgsql conecta, escribe un comentario como:

psql (9.3.6, servidor 9.1.13)

Esto significa que está ejecutando pgsql 9.3.6 y que el puerto 5433 hace referencia al servidor 9.1.13.

Si no está seguro de qué puertos se utilizan actualmente, puede usar el comando netstat como en:

sudo netstat -a64np | grep LISTEN | grep postgres

El sudo es necesario para la opción -p que imprime el nombre del proceso. Eso le da una lista de puertos (generalmente puertos TCP y UDP).

Finalmente, en un sistema Debian / Ubuntu, puede obtener una lista de clusters instalados con el comando dpkg -l como en:

dpkg -l ''*postgres*''

La lista de entradas que comienzan con ''ii'' (columna más a la izquierda) están instaladas actualmente. Usted, por supuesto, tiene comandos similares para otros Unices para ayudarlo a determinar las versiones instaladas.


pg_restore , cuando se ejecuta sin un nombre de base de datos, genera un volcado de texto en stdout; puede enviarlo a otra parte con -f o con redirección de E / S.

pg_restore -f mydatabase.sql mydatabase.dump