PostgreSQL数据库的文件存储在哪里?


当前回答

在Windows上,PostgresSQL文档中描述的PGDATA目录在C:\Program Files\PostgreSQL\8.1\data.这样的地方特定数据库的数据位于(例如)C:\Program Files\PostgreSQL\8.1\data\base\ 100929下,我猜100929是数据库号。

其他回答

在我的Linux安装中,它在这里:/var/lib/postgresql/8.x/

你可以用initdb -D "c:/mydb/"

Picmate的答案是正确的。在windows上,主DB文件夹的位置是(至少在我的安装)

C:\PostgreSQL\9.2\data\base\

而且不是在程序文件中。

他的2个脚本,将给你确切的目录/文件(s)你需要:

SELECT oid from pg_database WHERE datname = <database_name>;
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>; 

我的在datname 16393和relfilenode 41603中

特定表/索引的位置可以通过TABLESPACEs进行调整:

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

我敢打赌你会问这个问题,因为你已经尝试了pg_ctl start,并收到以下错误:

pg_ctl:未指定数据库目录,环境变量PGDATA未设置

换句话说,您要在pg_ctl start命令中寻找放在-D之后的目录。

在本例中,您要查找的目录包含这些文件。

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

您可以通过使用操作系统提供的搜索来定位上面的任何文件和目录来定位它。

例如,在我的例子中(在Mac OS X上安装HomeBrew),这些文件位于/usr/local/var/ postgress中。要启动服务器,我输入:

pg_ctl -D /usr/local/var/postgres -w start

... 这很有效。

一个终端命令:pg_lsclusters(使用Ubuntu)

你需要的是在数据目录下:

Ver Cluster Port Status Owner    Data directory               Log file
10  main    5432 online postgres /var/lib/postgresql/10/main  /var/log/postgresql/postgresql-10-main.log
11  main    5433 online postgres /var/lib/postgresql/11/main  /var/log/postgresql/postgresql-11-main.log