PostgreSQL डेटाबेस को कहाँ संग्रहीत करता है?


343

PostgreSQL डेटाबेस के लिए फ़ाइलें कहाँ संग्रहीत की जाती हैं?



17
sudo -u postgres psql -c "show data_directory;"एक मानक PostgreSQL स्थापना पर वर्तमान भंडारण स्थानों को दिखाएगा।

जवाबों:


355

यह देखने के लिए कि डेटा निर्देशिका कहां है, इस क्वेरी का उपयोग करें।

show data_directory;

सभी रन-टाइम पैरामीटर देखने के लिए, उपयोग करें

show all;

आप फाइल सिस्टम के अन्य हिस्सों में डेटाबेस ऑब्जेक्ट्स को स्टोर करने के लिए टेबलस्पेस बना सकते हैं। तालिकाओं को देखने के लिए, जो उस डेटा निर्देशिका में नहीं हो सकता है, इस क्वेरी का उपयोग करें।

SELECT * FROM pg_tablespace;

1
data_directory दिखाएं; कमांड डेटा के सटीक स्थान को इंगित करता है। विशिष्ट फ़ोल्डर खोजना दर्दनाक है क्योंकि किसी अन्य व्यक्ति ने इसे आपके लिए इंस्टॉल किया है और अब आपको कॉन्फ़िगरेशन का पता नहीं है, इसलिए एसक्यूएल का पालन करने से समय की बचत होती है। :) धन्यवाद माइक।
विशाल

3
यह कहता है "डेटा डायरेक्टरी की जांच करने के लिए सुपरयुसर होना चाहिए" :(
अस्थायी_सुमेर_

5
यदि आप DBA नहीं हैं, तो आपको वास्तव में वैसे भी जानने की आवश्यकता नहीं है।
माइक शेरिल 'कैट रिकॉल'

8
BTW - अगर कोई मैक के लिए Postgres.app के डेटाबेस स्थान की तलाश में है, जैसे मैं था, तो यह डिफ़ॉल्ट रूप से ~ / लाइब्रेरी / एप्लीकेशन सपोर्ट / पोस्टग्रेज [ver] / var में है।
19

1
क्वेरी चलाने के लिए, PGAdmin III का उपयोग करें और मेनू बार में "एक क्वेरी चलाएँ" आइकन का उपयोग करें।
रटर होफस्टे

61

विंडोज 7 पर सभी डेटाबेस को नाम के pg_databaseतहत फाइल में एक नंबर से संदर्भित किया जाता है C:\Program Files (x86)\PostgreSQL\8.2\data\global। फिर आपको उस नंबर के तहत फ़ोल्डर का नाम खोजना चाहिए C:\Program Files (x86)\PostgreSQL\8.2\data\base। यह डेटाबेस की सामग्री है।


3
जब तक प्रश्न स्पष्ट रूप से ओएस का उल्लेख नहीं करता है, तब तक ओएस विशिष्ट तरीके से जवाब न दें।
सिमोनमेनके

24
क्यों नहीं? यदि आप OS का उल्लेख नहीं करते हैं और केवल "यह काम करता है" कहते हैं, तो कोई भी कोशिश करेगा कि एक अलग ओएस पर भ्रमित हो जाए। यह प्रासंगिक है। संपादित करें: ओह, आप शायद मतलब है "एक OS विशिष्ट जवाब बिल्कुल नहीं देते हैं।" मुझे लगता है कि समझ में आता है, मुझे नहीं पता।
डेविड विनीकी

34
@ डेविड, यह सवाल निश्चित रूप से बंद कर दिया गया था क्योंकि यह निर्दिष्ट नहीं करता था कि कौन सा ओएस। (यदि यह एक OS निर्दिष्ट करता था, तो इसे बहुत विशिष्ट होने के लिए बंद कर दिया जाता था।) आपका उत्तर सहायक और सूचनात्मक था - बस तब तक naysayers और downvoters पर ध्यान न दें जब तक कि वे SO को नष्ट करने में सफल नहीं हो जाते। नफरत करने वाले नफरत करते हैं, और वह सब।
सैमगुडी

@SamGoody आप क्या कह रहे थे, अगर यह जवाब वास्तव में सही था, तो एक बिंदु का एक सा होगा। (यह कड़ाई से गलत नहीं है, क्योंकि फ़ोल्डर विंडोज में हो सकता है, लेकिन यह निश्चित रूप से एक नहीं है)। पहले से दिए गए उत्तर का पालन करके यह मामला है या नहीं यह आसानी से पता लगाया जा सकता है।
जॉन हैना

@senthilkumari I के पास postgresql 11 और windows 10 हैं। जैसा कि आपने उल्लेख किया है, मैंने वैश्विक फ़ोल्डर के अंदर pg_database को देखने का प्रयास किया लेकिन मुझे कोई दिखाई नहीं दिया। मैं देख सकता था कि _vms, _fsm, config_exec_params, pg_control, pg_filenode.map, pg_internal.init का गुच्छा था। विंडोज़ 10 के लिए, मुझे कौन सी फ़ाइल नाम देनी चाहिए। क्या यह अलग है?
नचिकेत

29

PgAdmin खोलें और विशिष्ट डेटाबेस के लिए गुण पर जाएं। OID ढूंढें और फिर निर्देशिका खोलें

<POSTGRESQL_DIRECTORY>/data/base/<OID>

आपकी डीबी फाइलें होनी चाहिए।


14
SELECT oid from pg_database where datname = '<dbname>'
चार्ली


27

मेरी लिनक्स स्थापना के तहत, यह यहाँ है: /var/lib/postgresql/8.x/

आप इसे बदल सकते हैं initdb -D "c:/mydb/"


12
वितरण पर निर्भर करता है - फेडोरा 20 के लिए यह नीचे है /var/lib/pgsql/data। का उपयोग कर पता लगाने के लिए बेहतर है ps auxw|grep postgres|grep -- -D
स्किप्पी ले ग्रैंड गौरू

17

विशिष्ट तालिकाओं / अनुक्रमितों के स्थान को TABLESPACE द्वारा समायोजित किया जा सकता है:

CREATE TABLESPACE dbspace LOCATION '/data/dbs';
CREATE TABLE something (......) TABLESPACE dbspace;
CREATE TABLE otherthing (......) TABLESPACE dbspace;

15

सभी ने पहले से ही उत्तर दिया लेकिन केवल नवीनतम अपडेट के लिए। यदि आप जानना चाहते हैं कि सभी कॉन्फ़िगरेशन फ़ाइलें कहाँ रहती हैं तो शेल में इस कमांड को रन करें

SELECT name, setting FROM pg_settings WHERE category = 'File Locations';

14

मुझे यकीन है कि आप यह सवाल पूछ रहे हैं क्योंकि आपने कोशिश की है 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

... और यह काम करता है।


1
यदि आप होमब्रे का उपयोग करते हैं, तो इस डेटा का पता लगाने का एक आसान तरीका बस हैbrew info postgres
बेन

आप उस कारण के बारे में सही हैं जो मैं डेटाबेस फ़ोल्डर के लिए देख रहा हूं। लेकिन बात यह है कि मैं उपरोक्त फाइलों में से कोई भी नहीं ढूंढ सकता हूंlocate <filename>
aswin प्रभाकर

उन्हें मिला ... उपयोग करना थाsudo locate <filename>
aswin प्रभाकर

14

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 थ्रेड को पढ़ें


11

मैक पर: /Library/PostgreSQL/9.0/data/base

निर्देशिका को दर्ज नहीं किया जा सकता है, लेकिन आप सामग्री को इसके माध्यम से देख सकते हैं: sudo du -hc data


13
यदि आप होमब्रे (और आप ऐसा क्यों नहीं करेंगे?) के माध्यम से स्थापित होते हैं, तो यह वह होगा /usr/local/var/postgresजिसमें आप @ माइकश्रिल के show data_directory;टिप का उपयोग करके खोज सकते हैं
क्रिस बेक

/Library/PostgreSQL/9.0/data/baseसे अधिक मैक जैसा स्थान लगता है /usr/local/var/postgres। छिपे हुए खोजक सुविधाओं को सक्षम किए बिना आप फाइंडर के उत्तरार्द्ध में ब्राउज़ नहीं कर सकते।
चार्ली

@Charlie आप Go मेनू से फाइंडर का उपयोग करके ब्राउज़ कर सकते हैं। गो> फोल्डर पर जाएं ..., या GoG
जेसन एस

@JasonS हाँ, आप खोजक में नहीं-मैक-जैसे फ़ोल्डर को खोलने के लिए उस ट्रिक का उपयोग कर सकते हैं।
चार्ली

1
मेरे मामले में यह है: / उपयोगकर्ता / बॉब / पुस्तकालय / आवेदन समर्थन / पोस्टग्रेज / var-9.5
Bwyss

7

Windows पर, PGDATA निर्देशिका जो PostgresSQL डॉक्स का वर्णन करती है, वह कहीं पर है C:\Program Files\PostgreSQL\8.1\data। किसी विशेष डेटाबेस के लिए डेटा (उदाहरण के लिए) के अंतर्गत है C:\Program Files\PostgreSQL\8.1\data\base\100929, जहाँ मुझे लगता है कि 100929 डेटाबेस नंबर है।


1
खबरदार: यदि आप फाइलसिस्टम स्तर बैकअप करना चाहते हैं, तो इन निर्देशिकाओं का बैक अप न लें, क्योंकि, जैसा कि डॉक्स वर्णन करते हैं: "... आपको अपने संबंधित से केवल कुछ अलग-अलग टेबल या डेटाबेस का बैकअप लेने या पुनर्स्थापित करने का प्रलोभन दिया जा सकता है। फाइलें या निर्देशिका। यह काम नहीं करेगा क्योंकि इन फाइलों में निहित जानकारी प्रतिबद्ध लॉग फाइल, pg_clog / * के बिना उपयोग करने योग्य नहीं है, जिसमें सभी लेनदेन की प्रतिबद्ध स्थिति है। "
जानिस वेनबर्ग्स

यह निर्भर करता है। आप इसे स्थापित करने के लिए एक अलग फ़ोल्डर में कॉन्फ़िगर कर सकते हैं।
एवेव्स

खान पर, C: \ Program Files \ PostgreSQL \ 9.4 \ के अंदर कोई डेटा फ़ोल्डर नहीं है। क्या यह 9.4 के लिए कुछ विशिष्ट है या कुछ गलत है?
लूसीवॉयलेट

2

पिकमेट का जवाब सही है। विंडोज़ पर मुख्य 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 है

डेटाबेस फाइलें पोस्टग्रैसेकल में


0

मैं एक 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.