Відповіді:
Щоб побачити, де знаходиться каталог даних, використовуйте цей запит.
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>;
Це двійковий файл. Деталі файлів, такі як розмір та дата створення, можна отримати як завжди. Для отримання додаткової інформації прочитайте цю тему SO
На 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 - номер бази даних.
відповідь пікетника правильна. у 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>;
шахта знаходиться в даті 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