web-dev-qa-db-fra.com

Où PostgreSQL stocke-t-il la base de données?

Où sont stockés les fichiers d'une base de données PostgreSQL?

312
Teifion

Pour voir où se trouve le répertoire de données, utilisez cette requête.

show data_directory;

Pour voir tous les paramètres d'exécution, utilisez

show all;

Vous pouvez créer des espaces de table pour stocker des objets de base de données dans d'autres parties du système de fichiers. Pour voir les espaces de table, qui peuvent ne pas figurer dans ce répertoire de données, utilisez cette requête.

SELECT * FROM pg_tablespace;

Sous Windows7, toutes les bases de données sont référencées par un numéro dans le fichier nommé pg_database sous C:\Program Files (x86)\PostgreSQL\8.2\data\global. Ensuite, vous devez rechercher le nom du dossier par ce numéro sous C:\Program Files (x86)\PostgreSQL\8.2\data\base. C'est le contenu de la base de données.

57
senthilkumari

Ouvrez pgAdmin et accédez à Propriétés pour une base de données spécifique. Trouvez OID puis ouvrez le répertoire

<POSTGRESQL_DIRECTORY>/data/base/<OID>

Il devrait y avoir vos fichiers de base de données.

28
Almir Sarajčić

Sous mon installation Linux, c'est ici: /var/lib/postgresql/8.x/

Vous pouvez le changer avec initdb -D "c:/mydb/"

25
Sadegh

Comme suggéré dans " emplacement par défaut de la base de données PostgreSQL sous Linux ", vous pouvez le trouver sous Linux à l'aide de la commande suivante:

ps aux | grep postgres | grep -- -D
24

L'emplacement de tables/index spécifiques peut être ajusté par les TABLESPACE:

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

Postgres stocke les données dans des fichiers de son répertoire de données. Suivez les étapes ci-dessous pour accéder à une base de données et à ses fichiers:

La base de données correspondant à un fichier de table postgresql est un répertoire. Vous pouvez obtenir l'emplacement du répertoire de données complet en exécutant SHOW data_directory. sous UNIX, tel que Mac (par exemple: Mac) /Library/PostgreSQL/9.4/data Allez dans le dossier de base du répertoire de données contenant tous les dossiers de la base de données: /Library/PostgreSQL/9.4/data/base

Recherchez le nom du dossier de la base de données en exécutant (Donne un entier. Il s'agit du nom du dossier de la base de données):

SELECT oid from pg_database WHERE datname = <database_name>;

Recherchez le nom de fichier de la table en exécutant (Donne un entier. Il s'agit du nom du fichier):

SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>; 

C'est un fichier binaire. Les détails du fichier tels que la taille et la date de création peuvent être obtenus comme d’habitude. Pour plus d'informations lisez ce SO thread

14
picmate 涅

Tout le monde a déjà répondu, mais juste pour les dernières mises à jour. Si vous voulez savoir où se trouvent tous les fichiers de configuration, exécutez cette commande dans le shell.

SELECT name, setting FROM pg_settings WHERE category = 'File Locations';
13
Saad Saadi

Sur Mac: /Library/PostgreSQL/9.0/data/base

Le répertoire ne peut pas être entré, mais vous pouvez consulter le contenu via: Sudo du -hc data

11
evgeni

Je parie que vous posez cette question parce que vous avez essayé pg_ctl start et avez reçu l'erreur suivante:

pg_ctl: aucun répertoire de base de données spécifié et variable d'environnement PGDATA non définie

En d'autres termes, vous recherchez le répertoire à placer après -D dans votre commande pg_ctl start.

Dans ce cas, le répertoire que vous recherchez contient ces fichiers.

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

Vous pouvez le localiser en localisant l’un des fichiers et répertoires ci-dessus à l’aide de la recherche fournie avec votre système d’exploitation.

Par exemple, dans mon cas (a HomeBrew installer sur Mac OS X), ces fichiers se trouvent dans /usr/local/var/postgres. Pour démarrer le serveur je tape:

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

... et il fonctionne.

9
xagg

Sous Windows, le répertoire PGDATA décrit par la documentation PostgresSQL se trouve quelque part comme C:\Program Files\PostgreSQL\8.1\data. Les données pour une base de données particulière sont sous (par exemple) C:\Program Files\PostgreSQL\8.1\data\base\100929, où je suppose que 100929 est le numéro de la base de données.

6
Ben Hoyt

la réponse de picmate est juste. sous Windows, l'emplacement du dossier principal de la base de données est (du moins sur mon installation).

C:\PostgreSQL\9.2\data\base\

et pas dans les fichiers de programme.

ses 2 scripts, vous donnera le répertoire/fichier (s) dont vous avez besoin:

SELECT oid from pg_database WHERE datname = <database_name>;
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>; 

le mien est dans le nom de données 16393 et ​​le relfilenode 41603

database files in postgresql

1
k3nn