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


当前回答

我敢打赌你会问这个问题,因为你已经尝试了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

... 这很有效。

其他回答

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

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

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

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

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

在“PostgreSQL数据库在Linux上的默认位置”中建议,在Linux下你可以使用以下命令找到:

ps aux | grep postgres | grep -- -D

我敢打赌你会问这个问题,因为你已经尝试了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

... 这很有效。