Wo werden die Dateien für eine PostgreSQL-Datenbank gespeichert?
Antworten
Zu viele Anzeigen?Postgres speichert Daten in Dateien in seinem Datenverzeichnis. Führen Sie die folgenden Schritte aus, um zu einer Datenbank und ihren Dateien zu gelangen:
Die Datenbank, die einer Postgresql-Tabellendatei entspricht, ist ein Verzeichnis. Der Ort des gesamten Datenverzeichnisses kann durch Ausführen von SHOW data_directory
. in einem UNIX-ähnlichen Betriebssystem (z.B.: Mac) /Library/PostgreSQL/9.4/data
Gehen Sie in den Basisordner im Datenverzeichnis, der alle Datenbankordner enthält: /Library/PostgreSQL/9.4/data/base
Ermitteln Sie den Namen des Datenbankordners durch Ausführen von (Gibt eine ganze Zahl an. Dies ist der Name des Datenbankordners):
SELECT oid from pg_database WHERE datname = <database_name>;
Ermitteln Sie den Tabellendateinamen durch Ausführen von (Gibt eine ganze Zahl zurück, die den Dateinamen darstellt):
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
Dies ist eine Binärdatei. Dateidetails wie Größe und Erstellungsdatum können wie üblich abgerufen werden. Für mehr Informationen diesen SO-Thread lesen
Ich wette, dass Sie diese Frage stellen, weil Sie versucht haben pg_ctl start
und erhielt den folgenden Fehler:
pg_ctl: kein Datenbankverzeichnis angegeben und Umgebungsvariable PGDATA nicht gesetzt
Mit anderen Worten, Sie suchen nach dem Verzeichnis, das nach -D
in Ihrem pg_ctl start
Befehl.
In diesem Fall enthält das Verzeichnis, das Sie suchen, diese Dateien.
PG_VERSION pg_dynshmem pg_multixact
pg_snapshots pg_tblspc postgresql.conf
base pg_hba.conf pg_notify
pg_stat pg_twophase postmaster.opts
global pg_ident.conf pg_replslot
pg_stat_tmp pg_xlog postmaster.pid
pg_clog pg_logical pg_serial
pg_subtrans postgresql.auto.conf server.log
Sie können es finden, indem Sie eine der oben genannten Dateien und Verzeichnisse mit der Suchfunktion Ihres Betriebssystems suchen.
Zum Beispiel in meinem Fall (ein HomeBrew anbringen Mac OS X ), befinden sich diese Dateien in /usr/local/var/postgres
. Um den Server zu starten, gebe ich ein:
pg_ctl -D /usr/local/var/postgres -w start
... und es funktioniert.
4 Stimmen
postgresql.org/docs/9.5/static/storage-file-layout.html
48 Stimmen
sudo -u postgres psql -c "show data_directory;"
zeigt die aktuellen Speicherorte auf einer Standard-PostgreSQL-Installation an.