Antworten:
Verwenden Sie diese Abfrage, um festzustellen, wo sich das Datenverzeichnis befindet.
show data_directory;
Verwenden Sie, um alle Laufzeitparameter anzuzeigen
show all;
Sie können Tabellenbereiche erstellen, um Datenbankobjekte in anderen Teilen des Dateisystems zu speichern. Verwenden Sie diese Abfrage, um Tabellenbereiche anzuzeigen, die sich möglicherweise nicht in diesem Datenverzeichnis befinden.
SELECT * FROM pg_tablespace;
Auf Windows7 alle Datenbanken werden durch eine Zahl in der Datei mit dem Namen bezeichnet pg_database
unter C:\Program Files (x86)\PostgreSQL\8.2\data\global
. Dann sollten Sie unter dieser Nummer unter nach dem Ordnernamen suchen C:\Program Files (x86)\PostgreSQL\8.2\data\base
. Das ist der Inhalt der Datenbank.
Öffnen Sie pgAdmin und gehen Sie zu Eigenschaften für eine bestimmte Datenbank. Suchen Sie die OID und öffnen Sie das Verzeichnis
<POSTGRESQL_DIRECTORY>/data/base/<OID>
Es sollten Ihre DB-Dateien sein.
SELECT oid from pg_database where datname = '<dbname>'
Wie unter " Standardspeicherort der PostgreSQL-Datenbank unter Linux " vorgeschlagen, können Sie dies unter Linux mit dem folgenden Befehl herausfinden:
ps aux | grep postgres | grep -- -D
Unter meiner Linux-Installation ist es hier: /var/lib/postgresql/8.x/
Sie können es mit ändern initdb -D "c:/mydb/"
/var/lib/pgsql/data
. Besser herausfinden mit ps auxw|grep postgres|grep -- -D
.
Alle haben bereits geantwortet, aber nur für die neuesten Updates. Wenn Sie wissen möchten, wo sich alle Konfigurationsdateien befinden, führen Sie diesen Befehl in der Shell aus
SELECT name, setting FROM pg_settings WHERE category = 'File Locations';
Ich wette, Sie stellen diese Frage, weil Sie versucht haben, pg_ctl start
den folgenden Fehler zu erhalten:
pg_ctl: Kein Datenbankverzeichnis angegeben und Umgebungsvariable PGDATA nicht festgelegt
Mit anderen Worten, Sie suchen nach dem Verzeichnis, nach dem Sie -D
in Ihrem pg_ctl start
Befehl suchen möchten.
In diesem Fall enthält das gesuchte Verzeichnis 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 mithilfe der mit Ihrem Betriebssystem bereitgestellten Suche suchen.
In meinem Fall (eine HomeBrew- Installation unter Mac OS X ) befinden sich diese Dateien beispielsweise in /usr/local/var/postgres
. Um den Server zu starten, tippe ich:
pg_ctl -D /usr/local/var/postgres -w start
... und es funktioniert.
brew info postgres
locate <filename>
sudo locate <filename>
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 Speicherort des gesamten Datenverzeichnisses kann durch Ausführen abgerufen werden SHOW data_directory
. In einem UNIX-ähnlichen Betriebssystem (z. B. Mac) /Library/PostgreSQL/9.4/data
Gehen Sie in den Basisordner des Datenverzeichnisses, in dem sich alle Datenbankordner befinden:/Library/PostgreSQL/9.4/data/base
Suchen Sie den Namen des Datenbankordners, indem Sie Folgendes ausführen (Gibt eine Ganzzahl an. Dies ist der Name des Datenbankordners):
SELECT oid from pg_database WHERE datname = <database_name>;
Suchen Sie den Tabellendateinamen durch Ausführen (Gibt eine Ganzzahl an. Dies ist der Dateiname):
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
Dies ist eine Binärdatei. Dateidetails wie Größe und Erstellungsdatum können wie gewohnt abgerufen werden. Für weitere Informationen lesen Sie diesen SO-Thread
Auf dem Mac: /Library/PostgreSQL/9.0/data/base
Das Verzeichnis kann nicht eingegeben werden, aber Sie können den Inhalt anzeigen über: sudo du -hc data
/usr/local/var/postgres
Können Sie dies anhand des show data_directory;
Tipps von @ MikeSherrill herausfinden
/Library/PostgreSQL/9.0/data/base
scheint ein Mac-ähnlicher Ort zu sein als /usr/local/var/postgres
. Sie können im Finder nicht zu letzterem navigieren, ohne versteckte Finder-Funktionen zu aktivieren.
Unter Windows befindet sich das PGDATA-Verzeichnis, das in den PostgresSQL-Dokumenten beschrieben wird , ungefähr so C:\Program Files\PostgreSQL\8.1\data
. Die Daten für eine bestimmte Datenbank befinden sich unter (zum Beispiel) C:\Program Files\PostgreSQL\8.1\data\base\100929
, wobei 100929 die Datenbanknummer ist.
Die Antwort von picmate ist richtig. Unter Windows ist der Hauptspeicherort des DB-Ordners (zumindest bei meiner Installation).
C:\PostgreSQL\9.2\data\base\
und nicht in Programmdateien.
Mit seinen 2 Skripten erhalten Sie genau das Verzeichnis / die Datei (en), die Sie benötigen:
SELECT oid from pg_database WHERE datname = <database_name>;
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
meins ist in datname 16393 und relfilenode 41603
Ich führe Postgres (9.5) in einem Docker-Container aus (unter CentOS, wie es passiert), und wie Skippy le Grand Gourou in einem Kommentar oben erwähnt, befinden sich die Dateien in /var/lib/postgresql/data/
.
$ docker exec -it my-postgres-db-container bash
root@c7d61efe2a5d:/# cd /var/lib/postgresql/data/
root@c7d61efe2a5d:/var/lib/postgresql/data# ls -lh
total 56K
drwx------. 7 postgres postgres 71 Apr 5 2018 base
drwx------. 2 postgres postgres 4.0K Nov 2 02:42 global
drwx------. 2 postgres postgres 18 Dec 27 2017 pg_clog
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_commit_ts
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_dynshmem
-rw-------. 1 postgres postgres 4.4K Dec 27 2017 pg_hba.conf
-rw-------. 1 postgres postgres 1.6K Dec 27 2017 pg_ident.conf
drwx------. 4 postgres postgres 39 Dec 27 2017 pg_logical
drwx------. 4 postgres postgres 36 Dec 27 2017 pg_multixact
drwx------. 2 postgres postgres 18 Nov 2 02:42 pg_notify
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_replslot
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_serial
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_snapshots
drwx------. 2 postgres postgres 6 Sep 16 21:15 pg_stat
drwx------. 2 postgres postgres 63 Nov 8 02:41 pg_stat_tmp
drwx------. 2 postgres postgres 18 Oct 24 2018 pg_subtrans
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_tblspc
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_twophase
-rw-------. 1 postgres postgres 4 Dec 27 2017 PG_VERSION
drwx------. 3 postgres postgres 92 Dec 20 2018 pg_xlog
-rw-------. 1 postgres postgres 88 Dec 27 2017 postgresql.auto.conf
-rw-------. 1 postgres postgres 21K Dec 27 2017 postgresql.conf
-rw-------. 1 postgres postgres 37 Nov 2 02:42 postmaster.opts
-rw-------. 1 postgres postgres 85 Nov 2 02:42 postmaster.pid