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