Respostas:
Para ver onde está o diretório de dados, use esta consulta.
show data_directory;
Para ver todos os parâmetros de tempo de execução, use
show all;
Você pode criar espaços de tabela para armazenar objetos de banco de dados em outras partes do sistema de arquivos. Para ver os espaços de tabela, que podem não estar nesse diretório de dados, use esta consulta.
SELECT * FROM pg_tablespace;
No Windows7, todos os bancos de dados são referidos por um número no arquivo nomeado pg_database
em C:\Program Files (x86)\PostgreSQL\8.2\data\global
. Em seguida, você deve procurar o nome da pasta com esse número em C:\Program Files (x86)\PostgreSQL\8.2\data\base
. Esse é o conteúdo do banco de dados.
Abra o pgAdmin e vá para Propriedades para um banco de dados específico. Encontre o OID e abra o diretório
<POSTGRESQL_DIRECTORY>/data/base/<OID>
Deve haver seus arquivos de banco de dados.
SELECT oid from pg_database where datname = '<dbname>'
Conforme sugerido em " Local padrão do banco de dados PostgreSQL no Linux ", no Linux, você pode descobrir usando o seguinte comando:
ps aux | grep postgres | grep -- -D
Sob minha instalação do Linux, está aqui: /var/lib/postgresql/8.x/
Você pode mudar com initdb -D "c:/mydb/"
/var/lib/pgsql/data
. Melhor descobrir usando ps auxw|grep postgres|grep -- -D
.
Todo mundo já respondeu, mas apenas para as atualizações mais recentes. Se você quiser saber onde todos os arquivos de configuração residem, execute este comando no shell
SELECT name, setting FROM pg_settings WHERE category = 'File Locations';
Aposto que você está fazendo esta pergunta porque tentou pg_ctl start
e recebeu o seguinte erro:
pg_ctl: nenhum diretório de banco de dados especificado e variável de ambiente PGDATA desativada
Em outras palavras, você está procurando o diretório para colocar -D
em seu pg_ctl start
comando.
Nesse caso, o diretório que você está procurando contém esses arquivos.
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
Você pode localizá-lo localizando qualquer um dos arquivos e diretórios acima, usando a pesquisa fornecida com o seu sistema operacional.
Por exemplo, no meu caso (uma instalação HomeBrew no Mac OS X ), esses arquivos estão localizados em /usr/local/var/postgres
. Para iniciar o servidor, digite:
pg_ctl -D /usr/local/var/postgres -w start
... e funciona.
brew info postgres
locate <filename>
sudo locate <filename>
O Postgres armazena dados em arquivos em seu diretório de dados. Siga as etapas abaixo para acessar um banco de dados e seus arquivos:
O banco de dados correspondente a um arquivo de tabela postgresql é um diretório. A localização de todo o diretório de dados pode ser obtida executando SHOW data_directory
. em um sistema operacional UNIX como (por exemplo: Mac) /Library/PostgreSQL/9.4/data
Entre na pasta base no diretório de dados que possui todas as pastas do banco de dados:/Library/PostgreSQL/9.4/data/base
Localize o nome da pasta do banco de dados executando (Fornece um número inteiro. Esse é o nome da pasta do banco de dados):
SELECT oid from pg_database WHERE datname = <database_name>;
Localize o nome do arquivo da tabela executando (Fornece um número inteiro. Este é o nome do arquivo):
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
Este é um arquivo binário. Detalhes do arquivo, como tamanho e data e hora da criação, podem ser obtidos como de costume. Para obter mais informações, leia este tópico do SO
No Mac: /Library/PostgreSQL/9.0/data/base
O diretório não pode ser inserido, mas você pode ver o conteúdo via: sudo du -hc data
/usr/local/var/postgres
qual você pode descobrir usando @ de MikeSherrill show data_directory;
ponta
/Library/PostgreSQL/9.0/data/base
parece um local mais parecido com um Mac do que /usr/local/var/postgres
. Você não pode procurar o último no Finder sem ativar os recursos ocultos do Finder.
No Windows, o diretório PGDATA que os documentos do PostgresSQL descrevem está em algum lugar como C:\Program Files\PostgreSQL\8.1\data
. Os dados para um banco de dados específico estão em (por exemplo) C:\Program Files\PostgreSQL\8.1\data\base\100929
, onde acho que 100929 é o número do banco de dados.
A resposta do picmate está certa. no windows, o local principal da pasta DB é (pelo menos na minha instalação)
C:\PostgreSQL\9.2\data\base\
e não em arquivos de programa.
seus 2 scripts, fornecerão o diretório / arquivo exato que você precisa:
SELECT oid from pg_database WHERE datname = <database_name>;
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
o meu está no nome de dados 16393 e no relfilenode 41603
Estou executando o postgres (9.5) em um contêiner de encaixe (no CentOS, por acaso) e, como Skippy le Grand Gourou menciona em um comentário acima, os arquivos estão localizados em /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