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

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

 William Pursell06 февр. 2017 г., 20:15
 Lorenzo Ancora01 февр. 2018 г., 12:03
sudo -u postgres psql -c "show data_directory;" покажет текущие места хранения в стандартной установке PostgreSQL.

Ответы на вопрос(11)

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

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

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

<POSTGRESQL_DIRECTORY>/data/base/<OID>

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

 10 нояб. 2014 г., 17:28
SELECT oid from pg_database where datname = '<dbname>'
 23 янв. 2014 г., 20:12
Как получить OID с помощью инструмента командной строки?

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

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

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

pg_ctl: no database directory specified and environment variable 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

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

 05 янв. 2016 г., 21:51
Если вы используете доморощенный, проще найти эти данные простоbrew info postgres

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

 13 мая 2014 г., 20:17
@ SamGoody, было бы немного похоже на то, что ты говорил, если бы этот ответ был действительно правильным. (Это не совсем неверно, так как папкаmight быть там в Windows, но это, конечно, не дано). Независимо от того, имеет ли это место или нет, можно легко узнать, следуя уже предоставленному ответу.
 26 окт. 2012 г., 11:54
Не отвечайте определенным образом для ОС, если в вопросе явно не указана ОС.
 17 мая 2013 г., 00:26
Почему бы и нет? Если вы не упомянули операционную систему и просто сказали «это работает», любой, кто попробует это на другой ОС, будет сбит с толку. Это актуально. РЕДАКТИРОВАТЬ: О, вы, вероятно, имеете в виду "не дать вообще никакого ответа для конкретной ОС". Я думаю, это имеет смысл, я не знаю.
 09 июл. 2013 г., 12:58
@ Дэвид, Вопрос был закрыт, предположительно, потому, что в нем не указано, какую ОС. (Если бы он указывал ОС, он был бы закрыт из-за того, что он был слишком конкретным.) Ваш ответ был полезным и информативным - просто игнорируйте скептиков и спекулянтов, пока им не удастся окончательно уничтожить SO. Ненавистники будут ненавидеть, и все такое.

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

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

 18 мар. 2016 г., 17:51
В моем случае это находится в: / Users / Bob / Библиотека / Поддержка приложений / Postgres / VAR-9,5
 10 нояб. 2014 г., 17:20
/Library/PostgreSQL/9.0/data/base кажется более Mac-как место, чем/usr/local/var/postgres, Вы не можете перейти к последнему в Finder, не включив скрытые функции Finder.
 05 янв. 2016 г., 21:51
Если вы используете доморощенный, проще найти эти данные простоbrew info postgres
 10 мар. 2015 г., 20:15
@JasonS Да, вы можете использовать этот трюк, чтобы открыть не похожую на Mac папку в Finder.
 21 июн. 2017 г., 05:25
по моему нет папки с данными внутри C: \ Program Files \ PostgreSQL \ 9.4 \ это что-то специфическое для 9.4 или что-то не так?
 10 мар. 2015 г., 06:45
@Charlie Вы можете просматривать с помощью Finder из меню Go. Перейти & gt; Перейдите в папку ... или & # x21E7; & # x2318; G
 26 февр. 2014 г., 11:22
Зависит от распределения & # x2014; для Fedora 20 под/var/lib/pgsql/data, Лучше узнать, используяps auxw|grep postgres|grep -- -D.
 20 июн. 2013 г., 15:58
Осторожно: если вы хотите сделать резервное копирование на уровне файловой системы, не делайте резервную копию этих каталогов, потому что, какdocs описать: & quot; ... у вас может возникнуть соблазн попытаться выполнить резервное копирование или восстановление только определенных отдельных таблиц или баз данных из соответствующих файлов или каталогов. Это не будет работать, потому что информация, содержащаяся в этих файлах, не может быть использована без файлов журнала фиксации, pg_clog / *, которые содержат статус фиксации всех транзакций. & Quot;
 07 нояб. 2014 г., 15:21
Это зависит Вы можете настроить его в другую папку при установке.
 16 апр. 2014 г., 02:40
Если вы установили через homebrew (а почему бы и нет?), Он будет в/usr/local/var/postgres который вы можете узнать, используя @ MikeSherrill & s; sshow data_directory; совет

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

База данных, соответствующая файлу таблицы postgresql, является каталогом. Расположение всего каталога данных можно получить, запустивSHOW data_directory. in a UNIX like OS (eg: 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>; 

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

Как предложено в & quot;Расположение базы данных PostgreSQL по умолчанию в Linux& quot ;, в Linux это можно узнать с помощью следующей команды:

ps aux | grep postgres | grep -- -D

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

show data_directory;

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

show all;

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

SELECT * FROM pg_tablespace;
 08 дек. 2016 г., 17:16
Чтобы выполнить запрос, используйте PGAdmin III и используйте & quot; выполнить запрос & quot; значок в строке меню.
 14 июн. 2013 г., 10:54
показать data_directory; Команда указывает на точное местоположение данных. Поиск определенной папки является болезненным, так как кто-то другой мог установить ее для вас, и теперь вы не знаете конфигурацию, поэтому следование sql поможет сэкономить время. :) Спасибо, Майк.
 20 авг. 2013 г., 00:45
Он говорит "должен быть суперпользователем для проверки каталога данных" :(
 20 авг. 2013 г., 12:15
Если вы не администратор базы данных, вам все равно не нужно об этом знать.
 11 янв. 2014 г., 20:00
Кстати, если кто-то ищет местоположение базы данных для Postgres.app на Mac, как я, он находится по умолчанию в ~ / Library / Application Support / Postgres [ver] / var.

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

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

 18 мар. 2016 г., 17:51
В моем случае это находится в: / Users / Bob / Библиотека / Поддержка приложений / Postgres / VAR-9,5
 16 апр. 2014 г., 02:40
Если вы установили через homebrew (а почему бы и нет?), Он будет в/usr/local/var/postgres который вы можете узнать, используя @ MikeSherrill & s; sshow data_directory; совет
 10 мар. 2015 г., 20:15
@JasonS Да, вы можете использовать этот трюк, чтобы открыть не похожую на Mac папку в Finder.
 10 мар. 2015 г., 06:45
@Charlie Вы можете просматривать с помощью Finder из меню Go. Перейти & gt; Перейдите в папку ... или & # x21E7; & # x2318; G
 10 нояб. 2014 г., 17:20
/Library/PostgreSQL/9.0/data/base кажется более Mac-как место, чем/usr/local/var/postgres, Вы не можете перейти к последнему в Finder, не включив скрытые функции Finder.

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

 20 июн. 2013 г., 15:58
Осторожно: если вы хотите сделать резервное копирование на уровне файловой системы, не делайте резервную копию этих каталогов, потому что, какdocs описать: & quot; ... у вас может возникнуть соблазн попытаться выполнить резервное копирование или восстановление только определенных отдельных таблиц или баз данных из соответствующих файлов или каталогов. Это не будет работать, потому что информация, содержащаяся в этих файлах, не может быть использована без файлов журнала фиксации, pg_clog / *, которые содержат статус фиксации всех транзакций. & Quot;
 07 нояб. 2014 г., 15:21
Это зависит Вы можете настроить его в другую папку при установке.
 21 июн. 2017 г., 05:25
по моему нет папки с данными внутри C: \ Program Files \ PostgreSQL \ 9.4 \ это что-то специфическое для 9.4 или что-то не так?

Ваш ответ на вопрос