¿Dónde se almacenan los archivos para una base de datos PostgreSQL?
¿Dónde se almacenan los archivos para una base de datos PostgreSQL?
Respuestas:
Para ver dónde está el directorio de datos, use esta consulta.
show data_directory;
Para ver todos los parámetros de tiempo de ejecución, use
show all;
Puede crear espacios de tablas para almacenar objetos de base de datos en otras partes del sistema de archivos. Para ver espacios de tablas, que podrían no estar en ese directorio de datos, use esta consulta.
SELECT * FROM pg_tablespace;
En Windows7, todas las bases de datos están referidas por un número en el archivo nombrado pg_database
debajo C:\Program Files (x86)\PostgreSQL\8.2\data\global
. Luego debe buscar el nombre de la carpeta por ese número debajo C:\Program Files (x86)\PostgreSQL\8.2\data\base
. Ese es el contenido de la base de datos.
Abra pgAdmin y vaya a Propiedades para una base de datos específica. Encuentra OID y luego abre el directorio
<POSTGRESQL_DIRECTORY>/data/base/<OID>
Debería haber sus archivos DB.
SELECT oid from pg_database where datname = '<dbname>'
Como se sugiere en " Ubicación predeterminada de la base de datos PostgreSQL en Linux ", en Linux puede averiguarlo usando el siguiente comando:
ps aux | grep postgres | grep -- -D
Bajo mi instalación de Linux, está aquí: /var/lib/postgresql/8.x/
Puedes cambiarlo con initdb -D "c:/mydb/"
/var/lib/pgsql/data
. Es mejor averiguarlo usando ps auxw|grep postgres|grep -- -D
.
Todos ya respondieron pero solo las últimas actualizaciones. Si desea saber dónde residen todos los archivos de configuración, ejecute este comando en el shell
SELECT name, setting FROM pg_settings WHERE category = 'File Locations';
Apuesto a que estás haciendo esta pregunta porque intentaste pg_ctl start
y recibiste el siguiente error:
pg_ctl: no se especificó el directorio de la base de datos y la variable de entorno PGDATA no se configuró
En otras palabras, está buscando el directorio para poner después -D
en su pg_ctl start
comando.
En este caso, el directorio que busca contiene estos archivos.
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
Puede localizarlo localizando cualquiera de los archivos y directorios anteriores utilizando la búsqueda provista con su sistema operativo.
Por ejemplo, en mi caso (una instalación de HomeBrew en Mac OS X ), estos archivos se encuentran en /usr/local/var/postgres
. Para iniciar el servidor escribo:
pg_ctl -D /usr/local/var/postgres -w start
... y funciona.
brew info postgres
locate <filename>
sudo locate <filename>
Postgres almacena datos en archivos en su directorio de datos. Siga los pasos a continuación para ir a una base de datos y sus archivos:
La base de datos correspondiente a un archivo de tabla postgresql es un directorio. La ubicación de todo el directorio de datos se puede obtener mediante la ejecución SHOW data_directory
. en un sistema operativo tipo UNIX (por ejemplo: Mac) /Library/PostgreSQL/9.4/data
Vaya dentro de la carpeta base en el directorio de datos que tiene todas las carpetas de la base de datos:/Library/PostgreSQL/9.4/data/base
Encuentre el nombre de la carpeta de la base de datos ejecutando (Da un número entero. Este es el nombre de la carpeta de la base de datos):
SELECT oid from pg_database WHERE datname = <database_name>;
Encuentre el nombre del archivo de la tabla ejecutando (Da un número entero. Este es el nombre del archivo):
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
Este es un archivo binario. Los detalles del archivo, como el tamaño y la fecha y hora de creación, se pueden obtener como de costumbre. Para más información lea este hilo SO
En Mac: /Library/PostgreSQL/9.0/data/base
El directorio no se puede ingresar, pero puede ver el contenido a través de: sudo du -hc data
/usr/local/var/postgres
que podría descubrir usando el show data_directory;
consejo de @ MikeSherrill
/Library/PostgreSQL/9.0/data/base
parece una ubicación más similar a Mac que /usr/local/var/postgres
. No puede buscar este último en Finder sin habilitar las funciones ocultas del Finder.
En Windows, el directorio PGDATA que describen los documentos de PostgresSQL está en algún lugar como C:\Program Files\PostgreSQL\8.1\data
. Los datos para una base de datos en particular están debajo (por ejemplo) C:\Program Files\PostgreSQL\8.1\data\base\100929
, donde supongo que 100929 es el número de la base de datos.
La respuesta de picmate es correcta. en Windows, la ubicación de la carpeta DB principal es (al menos en mi instalación)
C:\PostgreSQL\9.2\data\base\
y no en archivos de programa.
Sus 2 scripts le darán el directorio / archivo exacto que necesita:
SELECT oid from pg_database WHERE datname = <database_name>;
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
el mío está en datname 16393 y relfilenode 41603
Estoy ejecutando postgres (9.5) en un contenedor acoplable (en CentOS, como sucede), y como Skippy le Grand Gourou menciona en un comentario anterior, los archivos se encuentran en /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