Risposte:
Per vedere dove si trova la directory dei dati, utilizzare questa query.
show data_directory;
Per vedere tutti i parametri di runtime, utilizzare
show all;
È possibile creare tablespace per archiviare oggetti di database in altre parti del file system. Per visualizzare i tablespace, che potrebbero non trovarsi in quella directory di dati, utilizzare questa query.
SELECT * FROM pg_tablespace;
Su Windows 7 tutti i database sono indicati da un numero nel file indicato pg_database
sotto C:\Program Files (x86)\PostgreSQL\8.2\data\global
. Quindi dovresti cercare il nome della cartella con quel numero sotto C:\Program Files (x86)\PostgreSQL\8.2\data\base
. Questo è il contenuto del database.
Apri pgAdmin e vai su Proprietà per un database specifico. Trova OID e quindi apri la directory
<POSTGRESQL_DIRECTORY>/data/base/<OID>
Dovrebbero esserci i tuoi file DB.
SELECT oid from pg_database where datname = '<dbname>'
Come suggerito in " Posizione predefinita del database PostgreSQL su Linux ", sotto Linux puoi scoprirlo usando il seguente comando:
ps aux | grep postgres | grep -- -D
Sotto la mia installazione di Linux, è qui: /var/lib/postgresql/8.x/
Puoi cambiarlo con initdb -D "c:/mydb/"
/var/lib/pgsql/data
. Meglio scoprirlo usando ps auxw|grep postgres|grep -- -D
.
Tutti hanno già risposto, ma solo per gli ultimi aggiornamenti. Se vuoi sapere dove risiedono tutti i file di configurazione, esegui questo comando nella shell
SELECT name, setting FROM pg_settings WHERE category = 'File Locations';
Scommetto che stai facendo questa domanda perché hai provato pg_ctl start
e ricevuto il seguente errore:
pg_ctl: nessuna directory di database specificata e variabile di ambiente PGDATA non impostata
In altre parole, stai cercando la directory da inserire -D
nel tuo pg_ctl start
comando.
In questo caso, la directory che stai cercando contiene questi file.
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
Puoi individuarlo individuando uno dei file e le directory sopra usando la ricerca fornita con il tuo sistema operativo.
Ad esempio nel mio caso ( un'installazione di HomeBrew su Mac OS X ), questi file si trovano in /usr/local/var/postgres
. Per avviare il server digito:
pg_ctl -D /usr/local/var/postgres -w start
... e funziona.
brew info postgres
locate <filename>
sudo locate <filename>
Postgres memorizza i dati in file nella sua directory di dati. Seguire i passaggi seguenti per accedere a un database e ai suoi file:
Il database corrispondente a un file di tabella postgresql è una directory. La posizione dell'intera directory di dati può essere ottenuta eseguendo SHOW data_directory
. in un sistema operativo UNIX come (ad esempio: Mac) /Library/PostgreSQL/9.4/data
Vai all'interno della cartella di base nella directory dei dati che ha tutte le cartelle del database:/Library/PostgreSQL/9.4/data/base
Trova il nome della cartella del database eseguendo (Fornisce un numero intero. Questo è il nome della cartella del database):
SELECT oid from pg_database WHERE datname = <database_name>;
Trova il nome del file della tabella eseguendo (Fornisce un numero intero. Questo è il nome del file):
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
Questo è un file binario. I dettagli del file come dimensione e data di creazione possono essere ottenuti come al solito. Per maggiori informazioni leggi questa discussione SO
Su Mac: /Library/PostgreSQL/9.0/data/base
La directory non può essere inserita, ma puoi guardare il contenuto tramite: sudo du -hc data
/usr/local/var/postgres
questo che puoi scoprire usando il show data_directory;
suggerimento di @ MikeSherrill
/Library/PostgreSQL/9.0/data/base
sembra un luogo più simile a un Mac di /usr/local/var/postgres
. Non puoi accedere a quest'ultimo in Finder senza abilitare le funzioni di Finder nascosto.
Su Windows, la directory PGDATA descritta dai documenti PostgresSQL è in qualche modo simile C:\Program Files\PostgreSQL\8.1\data
. I dati per un determinato database sono sotto (ad esempio) C:\Program Files\PostgreSQL\8.1\data\base\100929
, dove immagino che 100929 sia il numero del database.
la risposta di picmate è giusta. su Windows il percorso della cartella DB principale è (almeno sulla mia installazione)
C:\PostgreSQL\9.2\data\base\
e non nei file di programma.
i suoi 2 script, ti daranno la directory / i file esatti di cui hai bisogno:
SELECT oid from pg_database WHERE datname = <database_name>;
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
il mio è nel nome dati 16393 e relfilenode 41603
Sto eseguendo Postgres (9.5) in un contenitore docker (su CentOS, come succede), e come Skippy le Grand Gourou menziona in un commento sopra, i file si trovano in /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