Где PostgreSQL хранит базу данных?

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

Ответ 1

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

show data_directory;

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

show all;

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

SELECT * FROM pg_tablespace;

Ответ 2

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

Ответ 3

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

<POSTGRESQL_DIRECTORY>/data/base/<OID>

Должны быть ваши файлы DB.

Ответ 4

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

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

Ответ 6

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

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

Ответ 7

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

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

Ответ 8

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

Ответ 9

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

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

Ответ 10

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

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

Другими словами, вы ищете каталог, который будет помещен после -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

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

Ответ 11

В Windows каталог PGDATA, который описывают документы PostgresSQL, находится где-то вроде C:\Program Files\PostgreSQL\8.1\data. Данные для конкретной базы данных находятся (например) в C:\Program Files\PostgreSQL\8.1\data\base\100929, где, как мне кажется, 100929 - это номер базы данных.

Ответ 12

Picmate ответ правильный. на windows расположение основной папки БД (по крайней мере на моей установке)

C:\PostgreSQL\9.2\data\base\

а не в программных файлах.

его 2 сценария, даст вам точный каталог/файл вам нужно:

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

мой находится в datname 16393 и relfilenode 41603

database files in postgresql