Yanıtlar:
Veri dizininin nerede olduğunu görmek için bu sorguyu kullanın.
show data_directory;
Tüm çalışma zamanı parametrelerini görmek için şunu kullanın:
show all;
Veritabanı nesnelerini dosya sisteminin diğer bölümlerinde depolamak için tablo alanları oluşturabilirsiniz. Bu veri dizininde bulunmayan tablo alanlarını görmek için bu sorguyu kullanın.
SELECT * FROM pg_tablespace;
Windows7'de tüm veritabanları pg_database
altında dosyadaki bir sayı ile belirtilir C:\Program Files (x86)\PostgreSQL\8.2\data\global
. Ardından, klasör adını aşağıdaki numaraya göre aramalısınız C:\Program Files (x86)\PostgreSQL\8.2\data\base
. Veritabanının içeriği budur.
PgAdmin'i açın ve belirli bir veritabanı için Özellikler'e gidin. OID'yi bulun ve ardından dizini açın
<POSTGRESQL_DIRECTORY>/data/base/<OID>
DB dosyalarınız olmalıdır.
SELECT oid from pg_database where datname = '<dbname>'
" Linux'ta PostgreSQL veritabanı varsayılan konumu " nda önerildiği gibi , Linux altında aşağıdaki komutu kullanarak öğrenebilirsiniz:
ps aux | grep postgres | grep -- -D
Linux kurulumum altında, burada: /var/lib/postgresql/8.x/
İle değiştirebilirsiniz initdb -D "c:/mydb/"
/var/lib/pgsql/data
. Kullanarak bulmak daha iyi ps auxw|grep postgres|grep -- -D
.
Herkes zaten cevap verdi ama sadece en son güncellemeler için. Tüm yapılandırma dosyalarının nerede olduğunu bilmek istiyorsanız, bu komutu kabukta çalıştırın
SELECT name, setting FROM pg_settings WHERE category = 'File Locations';
Bahse girerim bu soruyu soruyorsunuz çünkü pg_ctl start
şu hatayı denediniz ve aldınız:
pg_ctl: veritabanı dizini belirtilmedi ve ortam değişkeni PGDATA ayarlanmadı
Başka bir deyişle, sonra hisse satış dizine arıyorsanız -D
sizin de pg_ctl start
komuta.
Bu durumda, aradığınız dizin bu dosyaları içerir.
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
İşletim sisteminizle sağlanan aramayı kullanarak yukarıdaki dosya ve dizinlerden herhangi birini bularak bulabilirsiniz.
Örneğin benim durumumda ( Mac OS X'te bir HomeBrew kurulumu ), bu dosyalar içinde bulunur . Sunucuyu başlatmak için şunu yazıyorum:/usr/local/var/postgres
pg_ctl -D /usr/local/var/postgres -w start
... ve çalışıyor.
brew info postgres
locate <filename>
sudo locate <filename>
Postgres, verileri veri dizinindeki dosyalarda saklar. Bir veritabanına ve dosyalarına gitmek için aşağıdaki adımları izleyin:
Bir postgresql tablo dosyasına karşılık gelen veritabanı bir dizindir. Tüm veri dizininin konumu çalıştırılarak elde edilebilir SHOW data_directory
. UNIX gibi bir işletim sisteminde (örneğin: Mac) /Library/PostgreSQL/9.4/data
Veri dizinindeki tüm veritabanı klasörlerinin bulunduğu temel klasörün içine gidin:/Library/PostgreSQL/9.4/data/base
Çalıştırarak veritabanı klasörü adını bulun (Bir tamsayı verir. Bu veritabanı klasörü adıdır):
SELECT oid from pg_database WHERE datname = <database_name>;
Tablo dosya adını çalıştırarak bulun (Tamsayı verir. Bu dosya adıdır):
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
Bu bir ikili dosyadır. Boyut ve oluşturma tarihi gibi dosya ayrıntıları her zamanki gibi elde edilebilir. Daha fazla bilgi için bu SO dizisini okuyun
Mac'te: /Library/PostgreSQL/9.0/data/base
Dizin girilemez, ancak içeriğe şu yolla bakabilirsiniz: sudo du -hc data
/usr/local/var/postgres
@ MikeSherrill'in show data_directory;
ipucunu kullanarak keşfedebileceğiniz şey olabilir
/Library/PostgreSQL/9.0/data/base
daha Mac benzeri bir yere benziyor /usr/local/var/postgres
. Gizli Finder özelliklerini etkinleştirmeden Finder'da ikincisine göz atamazsınız.
Windows'ta PostgresSQL belgelerinin tanımladığı PGDATA dizini benzer bir yerdedir C:\Program Files\PostgreSQL\8.1\data
. Belirli bir veritabanı için veri (örneğin) altındadır C:\Program Files\PostgreSQL\8.1\data\base\100929
, burada sanırım 100929 veritabanı numarasıdır.
picmate'in cevabı doğru. Windows'ta ana DB klasörü konumu (en azından yüklememde)
C:\PostgreSQL\9.2\data\base\
ve program dosyalarında değil.
2 komut dosyası size tam olarak ihtiyacınız olan dizin / dosyaları verecektir:
SELECT oid from pg_database WHERE datname = <database_name>;
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
benimki 16393 datname ve relfilenode 41603
Bir docker kapsayıcısında (olduğu gibi CentOS üzerinde) postgres (9.5) çalıştırıyorum ve Skippy le Grand Gourou yukarıdaki bir açıklamada bahsedildiği gibi dosyalar yer alıyor /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