Ответы:
Чтобы увидеть, где находится каталог данных, используйте этот запрос.
show data_directory;
Чтобы увидеть все параметры времени выполнения, используйте
show all;
Вы можете создавать табличные пространства для хранения объектов базы данных в других частях файловой системы. Чтобы увидеть табличные пространства, которые могут отсутствовать в этом каталоге данных, используйте этот запрос.
SELECT * FROM pg_tablespace;
На Windows7 все базы данных называют числом в файле с именем pg_database
под C:\Program Files (x86)\PostgreSQL\8.2\data\global
. Затем вы должны найти имя папки по этому номеру в C:\Program Files (x86)\PostgreSQL\8.2\data\base
. Это содержание базы данных.
Откройте pgAdmin и перейдите в Свойства для конкретной базы данных. Найдите OID и откройте каталог
<POSTGRESQL_DIRECTORY>/data/base/<OID>
Там должны быть ваши файлы БД.
SELECT oid from pg_database where datname = '<dbname>'
Как указано в разделе « Расположение базы данных PostgreSQL по умолчанию в Linux », в Linux вы можете узнать, используя следующую команду:
ps aux | grep postgres | grep -- -D
Под моей установкой Linux это здесь: /var/lib/postgresql/8.x/
Вы можете изменить это с initdb -D "c:/mydb/"
/var/lib/pgsql/data
. Лучше узнать, используя ps auxw|grep postgres|grep -- -D
.
Все уже ответили, но только за последние обновления. Если вы хотите знать, где находятся все файлы конфигурации, выполните эту команду в оболочке.
SELECT name, setting FROM pg_settings WHERE category = 'File Locations';
Могу поспорить, что вы задаете этот вопрос, потому что вы попробовали 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
... и это работает.
brew info postgres
locate <filename>
sudo locate <filename>
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>;
Это бинарный файл. Детали файла, такие как размер и время создания, можно получить как обычно. Для получения дополнительной информации прочитайте эту тему
На Mac: /Library/PostgreSQL/9.0/data/base
Каталог не может быть введен, но вы можете посмотреть содержимое через: sudo du -hc data
/usr/local/var/postgres
которые вы можете обнаружить с помощью @ MikeSherrill в show data_directory;
наконечнике
/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 - это номер базы данных.
правильный ответ от 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
Я запускаю postgres (9.5) в док-контейнере (на CentOS, как это происходит), и, как упоминает Skippy le Grand Gourou в комментарии выше, файлы находятся в /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