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


当前回答

Postgres将数据存储在其数据目录中的文件中。按照以下步骤进入数据库及其文件:

postgresql表文件对应的数据库是目录。整个数据目录的位置可以通过执行SHOW data_directory命令获取。 在UNIX中,如OS(例如:Mac) /Library/PostgreSQL/9.4/data 进入data目录下的base文件夹,其中包含所有数据库文件夹:/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线程

其他回答

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

ps aux | grep postgres | grep -- -D

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

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

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

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

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

要查看数据目录的位置,请使用此查询。

show data_directory;

要查看所有运行时参数,请使用

show all;

您可以创建表空间来在文件系统的其他部分存储数据库对象。要查看可能不在该数据目录中的表空间,请使用此查询。

SELECT *, pg_tablespace_location(oid) FROM pg_tablespace;