wake-up-neo.net

Wo speichert PostgreSQL die Datenbank?

Wo sind die Dateien für eine PostgreSQL-Datenbank gespeichert?

312
Teifion

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 Tablespaces erstellen, um Datenbankobjekte in anderen Teilen des Dateisystems zu speichern. Verwenden Sie diese Abfrage, um Tablespaces anzuzeigen, die sich möglicherweise nicht in diesem Datenverzeichnis befinden.

SELECT * FROM pg_tablespace;

Unter Windows7 werden alle Datenbanken durch eine Nummer in der Datei mit dem Namen pg_database Unter C:\Program Files (x86)\PostgreSQL\8.2\data\global referenziert. Dann sollten Sie unter C:\Program Files (x86)\PostgreSQL\8.2\data\base nach dem Ordnernamen anhand dieser Nummer suchen. Das ist der Inhalt der Datenbank.

57
senthilkumari

Öffnen Sie pgAdmin und gehen Sie zu Eigenschaften für eine bestimmte Datenbank. Suchen Sie nach OID und öffnen Sie das Verzeichnis

<POSTGRESQL_DIRECTORY>/data/base/<OID>

Dort sollten sich Ihre DB-Dateien befinden.

28

Unter meiner Linux-Installation ist es hier: /var/lib/postgresql/8.x/

Sie können es mit initdb -D "c:/mydb/" Ändern.

25
Sadegh

Wie in " Standardverzeichnis der PostgreSQL-Datenbank unter Linux " vorgeschlagen, können Sie dies unter Linux mit dem folgenden Befehl herausfinden:

ps aux | grep postgres | grep -- -D

Die Position bestimmter Tabellen/Indizes kann mit TABLESPACEs angepasst werden:

CREATE TABLESPACE dbspace LOCATION '/data/dbs';
CREATE TABLE something (......) TABLESPACE dbspace;
CREATE TABLE otherthing (......) TABLESPACE dbspace;
15
ymv

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 einer postgresql-Tabellendatei entsprechende Datenbank ist ein Verzeichnis. Den Speicherort des gesamten Datenverzeichnisses erhalten Sie durch Ausführen von SHOW data_directory. in einem UNIX-ähnlichen Betriebssystem (zB 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 durch Ausführen von (Gibt eine Ganzzahl an. Dies ist der Name des Datenbankordners):

SELECT oid from pg_database WHERE datname = <database_name>;

Suchen Sie den Namen der Tabellendatei, indem Sie Folgendes 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

14
picmate 涅

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';
13
Saad Saadi

Auf dem Mac: /Library/PostgreSQL/9.0/data/base

Das Verzeichnis kann nicht eingegeben werden, aber Sie können den Inhalt ansehen über: Sudo du -hc data

11
evgeni

Ich wette, Sie stellen diese Frage, weil Sie pg_ctl start Ausprobiert und die folgende Fehlermeldung erhalten haben:

pg_ctl: kein Datenbankverzeichnis angegeben und Umgebungsvariable PGDATA nicht gesetzt

Mit anderen Worten, Sie suchen nach dem Verzeichnis, das in Ihrem Befehl -D Nach pg_ctl start Eingefügt werden soll.

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 gelieferten Suche suchen.

In meinem Fall (a HomeBrew Installation unter Mac OS X) befinden sich diese Dateien beispielsweise in /usr/local/var/postgres. So starten Sie den von mir eingegebenen Server:

pg_ctl -D /usr/local/var/postgres -w start

... und es funktioniert.

9
xagg

Unter Windows befindet sich das PGDATA-Verzeichnis, das in PostgresSQL-Dokumente beschreiben an einer Stelle wie 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 ich denke 100929 die Datenbanknummer ist.

6
Ben Hoyt

die Antwort von picmate ist richtig. Unter Windows ist das Hauptverzeichnis des DB-Ordners (zumindest in meiner Installation).

C:\PostgreSQL\9.2\data\base\

und nicht in Programmdateien.

in seinen 2 Skripten finden Sie genau das Verzeichnis/die Dateien, 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 im datennamen 16393 und relfilenode 41603

database files in postgresql

1
k3nn