it-swarm.com.de

postgresql wohin geht die Ausgabe von pg_dump

Ich versuche, eine Datenbank von Postgresql zu sichern, und ich möchte den Befehl pg_dump verwenden.
Ich habe es versucht :

psql -U postgres
postgres-# pg_dump test > backup.sql

Aber ich weiß nicht, wohin die Ausgabedatei geht.
.__ Jede Hilfe wird geschätzt

17
Dariush Jafari

Gehen Sie zum Befehl Eingabeaufforderung und zum Verzeichnis postgresql\9.3\bin. 

Beispiel

.

..
    c:\Program files\postgresql\9.3\bin> pg_dump -h localhost -p 5432 -U postgres test > D:\backup.sql
...

Geben Sie nach dem obigen Befehl das Benutzer "postgres" - Passwort ein und überprüfen Sie das D:\-Laufwerk auf backup.sql-Datei

15
Meem

In meiner Situation (PostgreSQL 9.1.21, Centos 6.7) der Befehl

runuser -l postgres -c 'pg_dump my_database > my_database.sql'

die Datei hier gespeichert:

/var/lib/pgsql/my_database.sql

Nicht sicher, ob dies für andere Linux-Versionen, CentOS- und/oder pgl-Versionen gilt. Laut dem Antwortbeitrag des Fragestellers dieser Frage ist dies wahr, aber andere Benutzer sagten, die Sicherungsdatei befände sich im aktuellen Verzeichnis (eine Situation, die sich aus offensichtlichen Gründen von den meisten Lesern dieses Threads unterscheidet). Nun, ich hoffe, dass dies anderen Benutzern mit demselben Problem helfen kann.

Ps .: Wenn dies nicht der Pfad für Ihre Situation ist, können Sie (unter Linux) versuchen, ihn mithilfe des folgenden Befehls zu finden (wie von @ Bohemian in den Kommentaren dieser Frage angegeben). Dies kann jedoch einige Zeit dauern:

find / -name 'my_database.sql'

EDIT: Ich habe versucht, den analogen Befehl in Ubuntu 12.04 auszuführen (es funktioniert auf Ubuntu 18.04):

Sudo -u postgres pg_dump my_database > my_database.sql

Und in diesem Fall wurde die Datei in dem aktuellen Verzeichnis gespeichert, in dem ich den Befehl ausgeführt habe! Daher können beide Fälle in Linux vorkommen, je nachdem, in welchem ​​Dist Sie gerade arbeiten

5
Brian Hellekin

Ich bin zu spät auf dieser Party, aber ich habe das Gefühl, dass keine der Antworten wirklich richtig ist. Die meisten scheinen zu implizieren, dass pg_dump irgendwo eine Datei schreibt. Es tut nicht Sie senden die Ausgabe an eine Datei und you hat der Shell mitgeteilt, wo sie diese Datei schreiben soll.

In Ihrem Beispiel pg_dump test > backup.sql, das das plain- oder SQL-Format verwendet, gibt der pg_dump-Befehl speichert nicht eine beliebige Datei an. Es sendet nur die Ausgabe an STDOUT, das normalerweise Ihr Bildschirm ist, und es ist fertig.

In Ihrem Befehl haben Sie jedoch auch Ihrer Shell (Terminal, Eingabeaufforderung, was auch immer) befohlen, STDOUT in eine Datei umzuleiten. Dies hat nichts mit pg_dump zu tun, ist aber eine Standardfunktion von Shells wie Bash oder cmd.exe.

Sie haben > verwendet, um STDOUT zu einer Datei anstelle des Bildschirms umzuleiten. Und Sie haben den Dateinamen angegeben: "backup.sql". Da Sie keinen Pfad angegeben haben, befindet sich die Datei in Ihrem aktuellen Verzeichnis. Dies ist wahrscheinlich Ihr Heimatverzeichnis, es sei denn, Sie haben einen cd ... in ein anderes Verzeichnis eingegeben.

Im speziellen Fall von pg_dump hätten Sie auch eine Alternative zur > /path/to/some_file-Shell-Umleitung verwenden können, indem Sie die Option -f some_file verwenden :

-f Datei
--file = Datei

Ausgabe an die angegebene Datei senden. Dieser Parameter kann für dateibasierte Ausgabeformate .__ weggelassen werden. In diesem Fall wird die Standardausgabe verwendet.

Ihr Befehl könnte also pg_dump test -f backup.sql gewesen sein, der pg_dump auffordert, direkt in diese Datei zu schreiben.

In jedem Fall geben Sie jedoch den Dateinamen an. Wenn Sie keinen Pfad angeben, wird die Datei in Ihrem aktuellen Verzeichnis erstellt. Wenn Ihre Eingabeaufforderung Ihr aktuelles Verzeichnis noch nicht anzeigt, können Sie es mit dem Befehl pwd unter Unix und cd unter Windows anzeigen lassen.

2
mivk

Wenn Sie keine vollständig qualifizierten Pfade angeben, z. 

pg_dump your_db_name > dbdump

dann in Windows es speichert Dumps im Home-Verzeichnis des aktuellen Benutzers. I.e .: 

C:\Users\username

2
WelcomeTo

In Linux lautet der Standardpfad:

/ var/lib/postgresql /

1
IvanM

Wenn Sie in pgadmin 4 für einen Mac auf "Weitere Details" klicken und davon ausgehen, dass der Speicherauszug erfolgreich ist, wird in einem Feld die Meldung "Befehl wird ausgeführt:" angezeigt. In diesem Feld wird "/ Applications/pgAdmin 4.app/Contents/SharedSupport/pg_dump" angezeigt --file "Pfad/zu/Datei", wobei Pfad zur Datei das Speicherziel ist.

0
faisal12