Où sont stockés les fichiers d'une base de données PostgreSQL?
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.
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.
Sous mon installation Linux, c'est ici: /var/lib/postgresql/8.x/
Vous pouvez le changer avec initdb -D "c:/mydb/"
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
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;
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
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';
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
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.
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.
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