Câu trả lời:
Để xem thư mục dữ liệu ở đâu, hãy sử dụng truy vấn này.
show data_directory;
Để xem tất cả các tham số thời gian chạy, sử dụng
show all;
Bạn có thể tạo không gian bảng để lưu trữ các đối tượng cơ sở dữ liệu trong các phần khác của hệ thống tệp. Để xem các không gian bảng, có thể không có trong thư mục dữ liệu đó, hãy sử dụng truy vấn này.
SELECT * FROM pg_tablespace;
Trên Windows7, tất cả các cơ sở dữ liệu được gọi bằng một số trong tệp có tên pg_database
bên dưới C:\Program Files (x86)\PostgreSQL\8.2\data\global
. Sau đó, bạn nên tìm kiếm tên thư mục theo số đó dưới C:\Program Files (x86)\PostgreSQL\8.2\data\base
. Đó là nội dung của cơ sở dữ liệu.
Mở pgAdmin và đi đến Thuộc tính cho cơ sở dữ liệu cụ thể. Tìm OID và sau đó mở thư mục
<POSTGRESQL_DIRECTORY>/data/base/<OID>
Cần có các tệp DB của bạn.
SELECT oid from pg_database where datname = '<dbname>'
Như được đề xuất trong " Vị trí mặc định của cơ sở dữ liệu PostgreSQL trên Linux ", trong Linux, bạn có thể tìm hiểu bằng cách sử dụng lệnh sau:
ps aux | grep postgres | grep -- -D
Theo cài đặt Linux của tôi, nó ở đây: /var/lib/postgresql/8.x/
Bạn có thể thay đổi nó với initdb -D "c:/mydb/"
/var/lib/pgsql/data
. Tốt hơn để tìm hiểu bằng cách sử dụng ps auxw|grep postgres|grep -- -D
.
Mọi người đã trả lời nhưng chỉ để cập nhật mới nhất. Nếu bạn muốn biết tất cả các tệp cấu hình nằm ở đâu thì hãy chạy lệnh này trong trình bao
SELECT name, setting FROM pg_settings WHERE category = 'File Locations';
Tôi cá là bạn đang hỏi câu hỏi này vì bạn đã thử pg_ctl start
và nhận được lỗi sau:
pg_ctl: không có thư mục cơ sở dữ liệu được chỉ định và biến môi trường PGDATA không được đặt
Nói cách khác, bạn đang tìm thư mục để đặt sau lệnh -D
của bạn pg_ctl start
.
Trong trường hợp này, thư mục bạn đang tìm có chứa các tệp này.
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
Bạn có thể xác định vị trí của nó bằng cách định vị bất kỳ tệp và thư mục nào ở trên bằng cách sử dụng tìm kiếm được cung cấp với HĐH của bạn.
Ví dụ: trong trường hợp của tôi ( cài đặt HomeBrew trên Mac OS X ), các tệp này được đặt trong /usr/local/var/postgres
. Để khởi động máy chủ, tôi gõ:
pg_ctl -D /usr/local/var/postgres -w start
... Và nó hoạt động.
brew info postgres
locate <filename>
sudo locate <filename>
Postgres lưu trữ dữ liệu trong các tệp trong thư mục dữ liệu của nó. Thực hiện theo các bước dưới đây để đi đến cơ sở dữ liệu và các tệp của nó:
Cơ sở dữ liệu tương ứng với tệp bảng postgresql là một thư mục. Vị trí của toàn bộ thư mục dữ liệu có thể được lấy bằng cách chạy SHOW data_directory
. trong UNIX như HĐH (ví dụ: Mac) /Library/PostgreSQL/9.4/data
Đi vào bên trong thư mục cơ sở trong thư mục dữ liệu có tất cả các thư mục cơ sở dữ liệu:/Library/PostgreSQL/9.4/data/base
Tìm tên thư mục cơ sở dữ liệu bằng cách chạy (Cung cấp một số nguyên. Đây là tên thư mục cơ sở dữ liệu):
SELECT oid from pg_database WHERE datname = <database_name>;
Tìm tên tệp bảng bằng cách chạy (Cung cấp một số nguyên. Đây là tên tệp):
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
Đây là một tập tin nhị phân. Chi tiết tập tin như kích thước và thời gian ngày tạo có thể được lấy như bình thường. Để biết thêm thông tin đọc chủ đề SO này
Trên máy Mac: /Library/PostgreSQL/9.0/data/base
Không thể nhập thư mục, nhưng bạn có thể xem nội dung qua: sudo du -hc data
/usr/local/var/postgres
nơi bạn có thể khám phá bằng show data_directory;
mẹo của @ MikeSherrill
/Library/PostgreSQL/9.0/data/base
có vẻ như một vị trí giống Mac hơn /usr/local/var/postgres
. Bạn không thể duyệt đến cái sau trong Finder mà không bật các tính năng Finder ẩn.
Trên Windows, thư mục PGDATA mà tài liệu PostgresSQL mô tả nằm ở đâu đó như thế nào C:\Program Files\PostgreSQL\8.1\data
. Dữ liệu cho một cơ sở dữ liệu cụ thể nằm dưới (ví dụ) C:\Program Files\PostgreSQL\8.1\data\base\100929
, trong đó tôi đoán 100929 là số cơ sở dữ liệu.
Câu trả lời của picmate là đúng. trên cửa sổ vị trí thư mục DB chính là (ít nhất là trên cài đặt của tôi)
C:\PostgreSQL\9.2\data\base\
và không có trong các tập tin chương trình.
2 tập lệnh của anh ấy, sẽ cung cấp cho bạn thư mục / tập tin chính xác mà bạn cần:
SELECT oid from pg_database WHERE datname = <database_name>;
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
Của tôi là trong datname 16393 và relfilenode 41603
Tôi đang chạy postgres (9.5) trong thùng chứa docker (trên CentOS, như nó xảy ra), và như Skippy le Grand Gourou đề cập trong một nhận xét ở trên, các tệp được đặt trong /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