Jawaban:
Untuk melihat di mana direktori data, gunakan kueri ini.
show data_directory;
Untuk melihat semua parameter run-time, gunakan
show all;
Anda bisa membuat tablespace untuk menyimpan objek database di bagian lain dari sistem file. Untuk melihat tablespace, yang mungkin tidak ada di direktori data itu, gunakan kueri ini.
SELECT * FROM pg_tablespace;
Pada Windows7, semua basis data dirujuk dengan nomor dalam file yang dinamai di pg_database
bawah C:\Program Files (x86)\PostgreSQL\8.2\data\global
. Maka Anda harus mencari nama folder dengan nomor di bawah C:\Program Files (x86)\PostgreSQL\8.2\data\base
. Itu adalah isi dari basis data.
Buka pgAdmin dan pergi ke Properties untuk database tertentu. Temukan OID dan kemudian buka direktori
<POSTGRESQL_DIRECTORY>/data/base/<OID>
Seharusnya ada file DB Anda.
SELECT oid from pg_database where datname = '<dbname>'
Seperti yang disarankan dalam " lokasi default database PostgreSQL di Linux ", di Linux Anda dapat mengetahuinya menggunakan perintah berikut:
ps aux | grep postgres | grep -- -D
Di bawah instalasi Linux saya, ada di sini: /var/lib/postgresql/8.x/
Anda dapat mengubahnya dengan initdb -D "c:/mydb/"
/var/lib/pgsql/data
. Lebih baik mencari tahu menggunakan ps auxw|grep postgres|grep -- -D
.
Semua orang sudah menjawab tetapi hanya untuk pembaruan terbaru. Jika Anda ingin tahu di mana semua file konfigurasi berada maka jalankan perintah ini di shell
SELECT name, setting FROM pg_settings WHERE category = 'File Locations';
Saya yakin Anda mengajukan pertanyaan ini karena Anda sudah mencoba pg_ctl start
dan menerima kesalahan berikut:
pg_ctl: tidak ada direktori database yang ditentukan dan variabel lingkungan PGDATA tidak disetel
Dengan kata lain, Anda sedang mencari direktori untuk dimasukkan -D
dalam pg_ctl start
perintah Anda .
Dalam hal ini, direktori yang Anda cari berisi file-file ini.
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
Anda dapat menemukannya dengan mencari file dan direktori di atas menggunakan pencarian yang disediakan dengan OS Anda.
Sebagai contoh dalam kasus saya ( instalasi HomeBrew pada Mac OS X ), file-file ini terletak di /usr/local/var/postgres
. Untuk memulai server saya ketik:
pg_ctl -D /usr/local/var/postgres -w start
... dan berhasil.
brew info postgres
locate <filename>
sudo locate <filename>
Postgres menyimpan data dalam file dalam direktori datanya. Ikuti langkah-langkah di bawah ini untuk menuju ke database dan file-file-nya:
Basis data yang terkait dengan file tabel postgresql adalah direktori. Lokasi seluruh direktori data dapat diperoleh dengan menjalankan SHOW data_directory
. dalam UNIX like OS (eg: Mac) /Library/PostgreSQL/9.4/data
Masuk ke dalam folder dasar di direktori data yang memiliki semua folder basis data:/Library/PostgreSQL/9.4/data/base
Temukan nama folder basis data dengan menjalankan (Memberikan bilangan bulat. Ini adalah nama folder basis data):
SELECT oid from pg_database WHERE datname = <database_name>;
Temukan nama file tabel dengan menjalankan (Memberikan bilangan bulat. Ini adalah nama file):
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
Ini adalah file biner. Detail file seperti ukuran dan waktu tanggal pembuatan dapat diperoleh seperti biasa. Untuk info lebih lanjut baca utas SO ini
Di Mac: /Library/PostgreSQL/9.0/data/base
Direktori tidak dapat dimasukkan, tetapi Anda dapat melihat konten melalui: sudo du -hc data
/usr/local/var/postgres
mana Anda dapat menemukan menggunakan show data_directory;
tip @ MikeSherrill
/Library/PostgreSQL/9.0/data/base
sepertinya lebih mirip lokasi Mac daripada /usr/local/var/postgres
. Anda tidak dapat menjelajah ke yang terakhir di Finder tanpa mengaktifkan fitur Finder yang tersembunyi.
Pada Windows, direktori PGDATA yang dijelaskan oleh PostgresSQL di suatu tempat adalah seperti C:\Program Files\PostgreSQL\8.1\data
. Data untuk database tertentu berada di bawah (misalnya) C:\Program Files\PostgreSQL\8.1\data\base\100929
, di mana saya kira 100.929 adalah nomor basis data.
jawaban picmate benar. pada windows lokasi folder DB utama adalah (setidaknya pada instalasi saya)
C:\PostgreSQL\9.2\data\base\
dan tidak dalam file program.
2 skripnya, akan memberi Anda direktori / file yang tepat yang Anda butuhkan:
SELECT oid from pg_database WHERE datname = <database_name>;
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
milikku ada di datname 16393 dan relfilenode 41603
Saya menjalankan postgres (9,5) dalam wadah buruh pelabuhan (pada CentOS, seperti yang terjadi), dan ketika Skippy le Grand Gourou menyebutkan dalam komentar di atas, file-file tersebut berada di /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