जवाबों:
यह देखने के लिए कि डेटा निर्देशिका कहां है, इस क्वेरी का उपयोग करें।
show data_directory;
सभी रन-टाइम पैरामीटर देखने के लिए, उपयोग करें
show all;
आप फाइल सिस्टम के अन्य हिस्सों में डेटाबेस ऑब्जेक्ट्स को स्टोर करने के लिए टेबलस्पेस बना सकते हैं। तालिकाओं को देखने के लिए, जो उस डेटा निर्देशिका में नहीं हो सकता है, इस क्वेरी का उपयोग करें।
SELECT * FROM pg_tablespace;
विंडोज 7 पर सभी डेटाबेस को नाम के 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>'
जैसा कि लिनक्स में " पोस्टग्रेजक्यूएल डेटाबेस डिफॉल्ट लोकेशन " में सुझाया गया है , लिनक्स के तहत आप निम्न कमांड का उपयोग करके पता लगा सकते हैं:
ps aux | grep postgres | grep -- -D
मेरी लिनक्स स्थापना के तहत, यह यहाँ है: /var/lib/postgresql/8.x/
आप इसे बदल सकते हैं initdb -D "c:/mydb/"
/var/lib/pgsql/data
। का उपयोग कर पता लगाने के लिए बेहतर है ps auxw|grep postgres|grep -- -D
।
मुझे यकीन है कि आप यह सवाल पूछ रहे हैं क्योंकि आपने कोशिश की है 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
आप अपने ओएस के साथ प्रदान की गई खोज का उपयोग करके उपरोक्त किसी भी फाइल और निर्देशिका का पता लगाकर इसका पता लगा सकते हैं।
उदाहरण के लिए मेरे मामले में ( मैक ओएस एक्स पर होमब्रीव इनस्टॉल ), ये फाइलें अंदर स्थित हैं । सर्वर टाइप करने के लिए:/usr/local/var/postgres
pg_ctl -D /usr/local/var/postgres -w start
... और यह काम करता है।
brew info postgres
locate <filename>
sudo locate <filename>
Postgres अपने डेटा डायरेक्टरी में फाइलों में डेटा स्टोर करता है। डेटाबेस और इसकी फ़ाइलों पर जाने के लिए नीचे दिए गए चरणों का पालन करें:
डेटाबेस एक पोस्टग्रैस्कल टेबल फ़ाइल के लिए एक निर्देशिका है। संपूर्ण डेटा निर्देशिका का स्थान चलाकर प्राप्त किया जा सकता है SHOW data_directory
। UNIX जैसे OS (जैसे: 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 थ्रेड को पढ़ें
मैक पर: /Library/PostgreSQL/9.0/data/base
निर्देशिका को दर्ज नहीं किया जा सकता है, लेकिन आप सामग्री को इसके माध्यम से देख सकते हैं: sudo du -hc data
/usr/local/var/postgres
जिसमें आप @ माइकश्रिल के show data_directory;
टिप का उपयोग करके खोज सकते हैं
/Library/PostgreSQL/9.0/data/base
से अधिक मैक जैसा स्थान लगता है /usr/local/var/postgres
। छिपे हुए खोजक सुविधाओं को सक्षम किए बिना आप फाइंडर के उत्तरार्द्ध में ब्राउज़ नहीं कर सकते।
Windows पर, PGDATA निर्देशिका जो PostgresSQL डॉक्स का वर्णन करती है, वह कहीं पर है C:\Program Files\PostgreSQL\8.1\data
। किसी विशेष डेटाबेस के लिए डेटा (उदाहरण के लिए) के अंतर्गत है C:\Program Files\PostgreSQL\8.1\data\base\100929
, जहाँ मुझे लगता है कि 100929 डेटाबेस नंबर है।
पिकमेट का जवाब सही है। विंडोज़ पर मुख्य DB फ़ोल्डर स्थान है (कम से कम मेरी स्थापना पर)
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 और रिलिफेनोड 41603 है
मैं एक docker कंटेनर में पोस्टग्रेज (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