Где PostgreSQL хранит базу данных? - PullRequest
305 голосов
/ 16 июля 2009

Где хранятся файлы для базы данных PostgreSQL?

Ответы [ 12 ]

321 голосов
/ 23 ноября 2011

Чтобы увидеть, где находится каталог данных, используйте этот запрос.

show data_directory;

Чтобы увидеть все параметры времени выполнения, используйте

show all;

Вы можете создавать табличные пространства для хранения объектов базы данных в других частях файловой системы. Для просмотра табличных пространств, которые могут отсутствовать в этом каталоге данных, используйте этот запрос.

SELECT * FROM pg_tablespace;
55 голосов
/ 09 марта 2012

В Windows7 все базы данных обозначены числом в файле с именем pg_database в C:\Program Files (x86)\PostgreSQL\8.2\data\global. Затем вам нужно найти имя папки по этому номеру в C:\Program Files (x86)\PostgreSQL\8.2\data\base. Это содержание базы данных.

27 голосов
/ 27 октября 2012

Откройте pgAdmin и перейдите в Свойства для конкретной базы данных. Найдите OID, а затем откройте каталог

<POSTGRESQL_DIRECTORY>/data/base/<OID>

Там должны быть ваши файлы БД.

25 голосов
/ 16 июля 2009

Под моей установкой Linux это здесь: /var/lib/postgresql/8.x/

Вы можете изменить его с помощью initdb -D "c:/mydb/"

23 голосов
/ 26 февраля 2014

Как указано в " Расположение базы данных PostgreSQL по умолчанию в Linux ", в Linux вы можете узнать, используя следующую команду:

ps aux | grep postgres | grep -- -D
14 голосов
/ 16 июля 2009

Расположение определенных таблиц / индексов может быть изменено с помощью TABLESPACE:

CREATE TABLESPACE dbspace LOCATION '/data/dbs';
CREATE TABLE something (......) TABLESPACE dbspace;
CREATE TABLE otherthing (......) TABLESPACE dbspace;
11 голосов
/ 08 декабря 2017

Все уже ответили, но только за последние обновления. Если вы хотите знать, где находятся все файлы конфигурации, выполните эту команду в оболочке

SELECT name, setting FROM pg_settings WHERE category = 'File Locations';
11 голосов
/ 10 июня 2015

Postgres хранит данные в файлах в своем каталоге данных. Чтобы перейти к базе данных и ее файлам, выполните следующие действия:

База данных, соответствующая файлу таблицы postgresql, является каталогом. Местоположение всего каталога данных можно получить, запустив SHOW data_directory. в UNIX-подобных ОС (например, Mac) /Library/PostgreSQL/9.4/data Перейдите в базовую папку в каталоге данных, в котором есть все папки базы данных: /Library/PostgreSQL/9.4/data/base

Найдите имя папки базы данных, выполнив (Дает целое число. Это имя папки базы данных):

SELECT oid from pg_database WHERE datname = <database_name>;

Найти имя файла таблицы, выполнив (Дает целое число. Это имя файла):

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

Это двоичный файл. Детали файла, такие как размер и время создания, можно получить как обычно. Для получения дополнительной информации прочитайте эту тему SO

11 голосов
/ 01 марта 2011

на Mac: /Library/PostgreSQL/9.0/data/base

Каталог не может быть введен, но вы можете посмотреть его содержимое: sudo du -hc data

8 голосов
/ 17 августа 2015

Готов поспорить, что вы задаете этот вопрос, потому что вы пытались pg_ctl start и получили следующую ошибку:

pg_ctl: каталог базы данных не указан и переменная окружения PGDATA не установлена ​​

Другими словами, вы ищете каталог, который нужно поставить после -D в вашей команде pg_ctl start.

В этом случае искомый каталог содержит эти файлы.

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

Вы можете найти его, найдя любой из файлов и каталогов выше, используя поиск, предоставляемый вашей ОС.

Например, в моем случае ( HomeBrew устанавливается на Mac OS X ) эти файлы находятся в /usr/local/var/postgres. Для запуска сервера набираю:

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

... и это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...