sudo -u postgres psql -c "show data_directory;"akan menunjukkan lokasi penyimpanan saat ini pada instalasi PostgreSQL standar.
Jawaban:
355
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.
tampilkan data_direktori; poin perintah ke lokasi data yang tepat. Mencari folder tertentu itu menyakitkan karena orang lain mungkin telah menginstalnya untuk Anda dan sekarang Anda tidak tahu konfigurasinya, jadi sql berikut membantu menghemat waktu. :) Terima kasih Mike.
Vishal
3
Ia mengatakan "harus superuser untuk memeriksa direktori data" :(
temporary_user_name
5
Jika Anda bukan DBA, Anda sebenarnya tidak perlu tahu.
Mike Sherrill 'Cat Recall'
8
BTW - jika ada yang mencari lokasi database untuk Postgres.app di mac seperti saya, ada di ~ / Library / Aplikasi Dukungan / Postgres [ver] / var secara default.
sstringer
1
Untuk menjalankan kueri, gunakan PGAdmin III dan gunakan ikon "jalankan kueri" di bilah menu.
Rutger Hofste
61
Pada Windows7, semua basis data dirujuk dengan nomor dalam file yang dinamai di pg_databasebawah 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.
Jangan menjawab dengan cara yang spesifik OS kecuali pertanyaan secara eksplisit menyatakan OS.
simonmenke
24
Kenapa tidak? Jika Anda tidak menyebutkan OS dan hanya mengatakan "ini berhasil", siapa pun yang mencoba pada OS yang berbeda akan bingung. Itu relevan. EDIT: Oh, Anda mungkin berarti "tidak memberikan jawaban khusus OS sama sekali." Saya kira itu masuk akal, saya tidak tahu.
David Winiecki
34
@ David, Pertanyaan ditutup mungkin karena tidak menentukan OS mana. (Jika sudah menentukan OS, itu akan ditutup karena terlalu spesifik.) Jawaban Anda sangat membantu dan informatif - abaikan saja penentang dan downvoters sampai mereka berhasil akhirnya menghancurkan SO. Pembenci akan membenci, dan semua itu.
SamGoody
@ SamGoody akan ada sedikit poin untuk apa yang Anda katakan, jika jawaban ini benar. (Ini tidak sepenuhnya salah, karena folder itu mungkin ada di Windows, tetapi tentu saja tidak diberikan). Entah itu masalahnya atau tidak dapat dengan mudah ditemukan dengan mengikuti jawaban yang sudah diberikan.
Jon Hanna
@senthilkumari Saya punya postgresql 11 dan windows 10. Seperti yang Anda sebutkan, saya mencoba melihat pg_database di dalam folder global tetapi saya tidak bisa melihatnya. Saya bisa melihat sekelompok _vms, _fsm, config_exec_params, pg_control, pg_filenode.map, pg_internal.init. Untuk windows 10 file mana yang namanya harus saya cari. Apakah ini berbeda?
Nachiket
29
Buka pgAdmin dan pergi ke Properties untuk database tertentu. Temukan OID dan kemudian buka direktori
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';
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:
Jika Anda menggunakan homebrew, cara yang lebih mudah untuk menemukan data ini cukupbrew info postgres
Ben
Anda benar tentang alasan saya mencari folder basis data. Tapi masalahnya saya tidak dapat menemukan file-file di atas denganlocate <filename>
aswin prabhakar
Menemukan mereka ... Harus menggunakansudo locate <filename>
aswin prabhakar
14
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
Jika Anda menginstal melalui homebrew (dan mengapa tidak?), Itu adalah di /usr/local/var/postgresmana Anda dapat menemukan menggunakan show data_directory;tip @ MikeSherrill
Chris Beck
/Library/PostgreSQL/9.0/data/basesepertinya lebih mirip lokasi Mac daripada /usr/local/var/postgres. Anda tidak dapat menjelajah ke yang terakhir di Finder tanpa mengaktifkan fitur Finder yang tersembunyi.
Charlie
@Charlie Anda dapat menelusuri menggunakan Finder dari menu Go. Go> Go to Folder ..., atau --G
Jason S
@JasonS Ya, Anda bisa menggunakan trik itu untuk membuka folder yang tidak seperti mac di Finder.
Charlie
1
Dalam kasus saya ini ada di: / Pengguna / bob / Perpustakaan / Dukungan Aplikasi / Postgres / var-9.5
Bwyss
7
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.
Hati-hati: Jika Anda ingin melakukan backup level sistem file, jangan hanya membuat cadangan direktori ini, karena, seperti yang dijelaskan oleh docs : "... Anda mungkin tergoda untuk mencoba membuat cadangan atau mengembalikan hanya tabel atau basis data individual tertentu dari masing-masing direktori. file atau direktori. Ini tidak akan berfungsi karena informasi yang terkandung dalam file-file ini tidak dapat digunakan tanpa file log komit, pg_clog / *, yang berisi status komit dari semua transaksi. "
Janis Veinbergs
Ini tergantung. Anda dapat mengonfigurasinya ke folder lain saat diinstal.
ANeves
pada saya, tidak ada folder data di dalam C: \ Program Files \ PostgreSQL \ 9.4 \ apakah ini sesuatu yang spesifik untuk 9.4 atau telah melakukan sesuatu yang salah?
LucyViolet
2
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 52018 base
drwx------.2 postgres postgres 4.0K Nov 202:42 global
drwx------.2 postgres postgres 18 Dec 272017 pg_clog
drwx------.2 postgres postgres 6 Dec 272017 pg_commit_ts
drwx------.2 postgres postgres 6 Dec 272017 pg_dynshmem
-rw-------.1 postgres postgres 4.4K Dec 272017 pg_hba.conf
-rw-------.1 postgres postgres 1.6K Dec 272017 pg_ident.conf
drwx------.4 postgres postgres 39 Dec 272017 pg_logical
drwx------.4 postgres postgres 36 Dec 272017 pg_multixact
drwx------.2 postgres postgres 18 Nov 202:42 pg_notify
drwx------.2 postgres postgres 6 Dec 272017 pg_replslot
drwx------.2 postgres postgres 6 Dec 272017 pg_serial
drwx------.2 postgres postgres 6 Dec 272017 pg_snapshots
drwx------.2 postgres postgres 6 Sep 1621:15 pg_stat
drwx------.2 postgres postgres 63 Nov 802:41 pg_stat_tmp
drwx------.2 postgres postgres 18 Oct 242018 pg_subtrans
drwx------.2 postgres postgres 6 Dec 272017 pg_tblspc
drwx------.2 postgres postgres 6 Dec 272017 pg_twophase
-rw-------.1 postgres postgres 4 Dec 272017 PG_VERSION
drwx------.3 postgres postgres 92 Dec 202018 pg_xlog
-rw-------.1 postgres postgres 88 Dec 272017 postgresql.auto.conf
-rw-------.1 postgres postgres 21K Dec 272017 postgresql.conf
-rw-------.1 postgres postgres 37 Nov 202:42 postmaster.opts
-rw-------.1 postgres postgres 85 Nov 202:42 postmaster.pid
sudo -u postgres psql -c "show data_directory;"
akan menunjukkan lokasi penyimpanan saat ini pada instalasi PostgreSQL standar.Jawaban:
Untuk melihat di mana direktori data, gunakan kueri ini.
Untuk melihat semua parameter run-time, gunakan
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.
sumber
Pada Windows7, semua basis data dirujuk dengan nomor dalam file yang dinamai di
pg_database
bawahC:\Program Files (x86)\PostgreSQL\8.2\data\global
. Maka Anda harus mencari nama folder dengan nomor di bawahC:\Program Files (x86)\PostgreSQL\8.2\data\base
. Itu adalah isi dari basis data.sumber
Buka pgAdmin dan pergi ke Properties untuk database tertentu. Temukan OID dan kemudian buka direktori
Seharusnya ada file DB Anda.
sumber
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:
sumber
Di bawah instalasi Linux saya, ada di sini:
/var/lib/postgresql/8.x/
Anda dapat mengubahnya dengan
initdb -D "c:/mydb/"
sumber
/var/lib/pgsql/data
. Lebih baik mencari tahu menggunakanps auxw|grep postgres|grep -- -D
.Lokasi tabel / indeks tertentu dapat disesuaikan dengan TABLESPACEs:
sumber
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
sumber
Saya yakin Anda mengajukan pertanyaan ini karena Anda sudah mencoba
pg_ctl start
dan menerima kesalahan berikut:Dengan kata lain, Anda sedang mencari direktori untuk dimasukkan
-D
dalampg_ctl start
perintah Anda .Dalam hal ini, direktori yang Anda cari berisi file-file ini.
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:... dan berhasil.
sumber
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):
Temukan nama file tabel dengan menjalankan (Memberikan bilangan bulat. Ini adalah nama file):
Ini adalah file biner. Detail file seperti ukuran dan waktu tanggal pembuatan dapat diperoleh seperti biasa. Untuk info lebih lanjut baca utas SO ini
sumber
Di Mac:
/Library/PostgreSQL/9.0/data/base
Direktori tidak dapat dimasukkan, tetapi Anda dapat melihat konten melalui:
sudo du -hc data
sumber
/usr/local/var/postgres
mana Anda dapat menemukan menggunakanshow 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.sumber
jawaban picmate benar. pada windows lokasi folder DB utama adalah (setidaknya pada instalasi saya)
dan tidak dalam file program.
2 skripnya, akan memberi Anda direktori / file yang tepat yang Anda butuhkan:
milikku ada di datname 16393 dan relfilenode 41603
sumber
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/
.sumber