Réponses:
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 disque logiques, qui ne se trouvent peut-être pas 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
sousC:\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
. Voilà le contenu de la base de données.
Ouvrez pgAdmin et accédez aux propriétés d'une base de données spécifique. Recherchez l'OID, puis ouvrez le répertoire
<POSTGRESQL_DIRECTORY>/data/base/<OID>
Il devrait y avoir vos fichiers DB.
SELECT oid from pg_database where datname = '<dbname>'
Comme suggéré dans " Emplacement par défaut de la base de données PostgreSQL sous Linux ", sous Linux, vous pouvez le découvrir à l'aide de la commande suivante:
ps aux | grep postgres | grep -- -D
Sous mon installation Linux, c'est ici: /var/lib/postgresql/8.x/
Vous pouvez le changer avec initdb -D "c:/mydb/"
/var/lib/pgsql/data
. Mieux vaut découvrir en utilisant ps auxw|grep postgres|grep -- -D
.
Tout le monde a déjà répondu, mais juste pour les dernières mises à jour. Si vous voulez savoir où résident tous les fichiers de configuration, exécutez cette commande dans le shell
SELECT name, setting FROM pg_settings WHERE category = 'File Locations';
Je parie que vous posez cette question parce que vous avez essayé pg_ctl start
et 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 -D
dans votre pg_ctl start
commande.
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 (une installation HomeBrew sur Mac OS X ), ces fichiers se trouvent dans /usr/local/var/postgres
. Pour démarrer le serveur que je tape:
pg_ctl -D /usr/local/var/postgres -w start
... et il fonctionne.
brew info postgres
locate <filename>
sudo locate <filename>
Postgres stocke les données dans des fichiers dans 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. L'emplacement de l'ensemble du répertoire de données peut être obtenu en exécutant SHOW data_directory
. dans un système d'exploitation UNIX (par exemple: Mac) /Library/PostgreSQL/9.4/data
Allez dans le dossier de base dans le répertoire de données qui contient 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 du fichier table en exécutant (Donne un entier. Il s'agit du nom du fichier):
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
Ceci 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 fil SO
Sur Mac: /Library/PostgreSQL/9.0/data/base
Le répertoire ne peut pas être saisi, mais vous pouvez consulter le contenu via: sudo du -hc data
/usr/local/var/postgres
lequel vous pouvez découvrir en utilisant @ MikeSherrill de show data_directory;
la pointe
/Library/PostgreSQL/9.0/data/base
semble être un emplacement plus proche de Mac que /usr/local/var/postgres
. Vous ne pouvez pas accéder à ce dernier dans le Finder sans activer les fonctionnalités cachées du Finder.
Sous Windows, le répertoire PGDATA décrit par les documents 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. sur Windows, l'emplacement du dossier DB principal est (au moins sur mon installation)
C:\PostgreSQL\9.2\data\base\
et non dans les fichiers programme.
ses 2 scripts, vous donneront 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 en datname 16393 et relfilenode 41603
J'exécute postgres (9.5) dans un conteneur docker (sur CentOS, comme cela arrive), et comme Skippy le Grand Gourou le mentionne dans un commentaire ci-dessus, les fichiers sont situés dans /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