我有兴趣获取PostgreSQL表格、视图、函数以及Linux操作系统中表格数据/内容的物理位置。如果PostgreSQL安装在SD卡和硬盘上,假设我有一些表格、视图、函数和数据存储在SD卡中,我希望能够随时将它们合并/复制到我的硬盘上,因此需要获取它们的物理位置。我希望数据库的存储方式是以普通文件的形式进行组织。
此外,是否可能查看这些文件的内容?也就是说,我可以访问它们吗?
此外,是否可能查看这些文件的内容?也就是说,我可以访问它们吗?
Kevin和Mike已经提供了指向数据目录的指针。要查找文件系统中表的物理位置,请使用以下命令:
SELECT pg_relation_filepath('my_table');
如果你不确定自己在做什么,请勿直接操作文件。
PGDATA/base
下的子目录代表整个数据库:
如果使用表空间,情况会更加复杂。请在手册中的数据库文件布局章节阅读详细信息:
对于集群中的每个数据库,
pg_database
中的OID命名了子目录。该子目录是数据库文件的默认位置;特别是其中存储了系统目录。
...
每个表和索引都储存在单独的文件中。对于普通关系,这些文件的名称以表或索引的filenode号码命名,可以在
pg_class.relfilenode
中找到。
...
pg_relation_filepath()
函数显示任何关系的完整路径(相对于PGDATA)。
粗体为强调部分。
有关函数pg_relation_filepath()
的手册。
show data_directory;
可以显示主数据目录。但这并不一定告诉您存储位置。