数据库中存储的 postgres 表空间的位置

Where in the DB is the Location of a postgres tablespace stored

我在 redhat 6 上使用 postgres 9.2

这应该很简单,但我到处都找不到。我正在寻找数据库 table 和存储 postgres table 空间位置的列,我认为它会在 PG_TABLESPACE 中,但

select * from pg_tablespace

显示...

postgres=# select * from pg_tablespace;
     spcname     | spcowner | spcacl | spcoptions
-----------------+----------+--------+------------
 pg_default      |       10 |        |
 pg_global       |       10 |        |
 C_TBL_DB91SABIR |       10 |        |
(3 rows)

但是没有位置,有什么想法可以保存位置吗?

谢谢

使用pg_tablespace_location(tablespace_oid)(PostgreSQL 9.2+)获取tablespace所在文件系统中的路径

您将从 pg_tablespace 中获得 tablespaceoid,因此查询应该是

select spcname
      ,pg_tablespace_location(oid) 
from   pg_tablespace;

使用以下查询获取表空间名称表空间位置。

postgres=# select spcname ,pg_tablespace_location(oid) from pg_tablespace;
  spcname   |    pg_tablespace_location     
------------+-------------------------------
 pg_default | 
 pg_global  | 
 fastspace  | /var/lib/postgresql/data/base
 demotbs    | /var/lib/postgresql/data

另一个超级简单的命令来列出所有 table spaces

\db+

这将很快为您提供所有 table space 详细信息