数据库中存储的 postgres 表空间的位置
Posted
技术标签:
【中文标题】数据库中存储的 postgres 表空间的位置【英文标题】:Where in the DB is the Location of a postgres tablespace stored 【发布时间】:2016-02-05 10:32:44 【问题描述】:我在 redhat 6 上使用 postgres 9.2
这应该很简单,但我在任何地方都找不到。我正在寻找存储 postgres 表空间位置的数据库表和列,我认为它会在 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)
但没有位置,有什么想法保存位置吗?
谢谢
【问题讨论】:
不是确切的答案:SHOW data_directory;
会告诉你当前数据库的位置
嗨@wingedpanther,它显示了 PGDATA 位置,但我正在寻找表空间的目录,我想查询它,以便我可以在表空间被删除时编写删除物理文件夹的脚本丢弃。
试试这个select spcname, pg_tablespace_location(oid) from pg_tablespace;
【参考方案1】:
使用pg_tablespace_location(tablespace_oid)
(PostgreSQL 9.2+)获取tablespace
所在文件系统中的路径。
您将从pg_tablespace
获得tablespace
中的oid
,因此查询应该是
select spcname
,pg_tablespace_location(oid)
from pg_tablespace;
【讨论】:
【参考方案2】:另一个列出所有表空间的超级简单命令
\db+
这将很快为您提供所有表空间详细信息
【讨论】:
【参考方案3】:使用以下查询获取表空间名称表空间位置。
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
【讨论】:
复制已经接受的答案有什么意义?以上是关于数据库中存储的 postgres 表空间的位置的主要内容,如果未能解决你的问题,请参考以下文章