Hoe converteer ik een binaire pgdump (gecomprimeerd) naar een gewoon SQL-bestand?

Ik wil wel wat gegevens zoeken in een databasedump, maar deze dumps gebruiken het binair gecomprimeerde formaat (PGDMPheader).

Hoe kan ik deze naar SQL converteren zonder ze te herstellen?


Antwoord 1, autoriteit 100%

pg_restore, wanneer uitgevoerd zonder een databasenaam, voert een tekstdump uit naar stdout; je kunt dat ergens anders naartoe sturen met -fof met I/O-omleiding.

pg_restore -f mydatabase.sql mydatabase.dump 

Antwoord 2, autoriteit 22%

De snelste methode die ik heb gebruikt was:

pg_restore mybinaryfile.backup > mysqlfile.sql

Geen speciale vlaggen, aangezien pg_restore het gewoon uitspuugt naar stdout.


Antwoord 3

Houd er rekening mee dat als u meerdere clusters uitvoert, het herstelcommando de standaardversie mogelijk niet leuk vindt…

pg_restore: [archiver] niet-ondersteunde versie (1.12) in bestandskop

In dat geval moet u de versie, host en poort specificeren zoals in:

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

(merk op dat de host:portinfo wordt genegeerd met de -f optie.)

De poort (5433) kan worden bepaald met de opdracht pgsqlzoals in:

pgsql --port 5433 template1

Wanneer pgsqlverbinding maakt, schrijft het een opmerking zoals:

psql (9.3.6, server 9.1.13)

Dit betekent dat u pgsql 9.3.6 gebruikt en dat poort 5433 verwijst naar server 9.1.13.

Als u niet zeker weet welke poorten momenteel worden gebruikt, kunt u de opdracht netstatgebruiken zoals in:

sudo netstat -a64np | grep LISTEN | grep postgres

De sudois vereist voor de optie -pdie de procesnaam afdrukt. Dat geeft je een lijst met poorten (meestal TCP- en UDP-poorten).

Ten slotte kunt u op een Debian/Ubuntu-systeem een ​​lijst met geïnstalleerde clusters krijgen met de opdracht dpkg -lzoals in:

dpkg -l '*postgres*'

De lijst met items die beginnen met ‘ii’ (meest linkse kolom) is momenteel geïnstalleerd. Je hebt natuurlijk vergelijkbare commando’s voor andere Unices om je te helpen bij het bepalen van de geïnstalleerde versies.

Other episodes