siv*_*iva 8 postgresql database-design data-storage
我有兴趣获得Linux OS中PostgreSQL表中可用的表,视图,函数,数据/内容的物理位置.我有一个场景,PostgreSQL可以安装在SD卡设备和硬盘上.如果我在SD中有表格,视图,功能,数据,我希望获得相同的物理位置,并在我希望更换存储空间时合并/复制到我的硬盘中.我希望数据库的存储应该是普通文件架构.
此外,是否可以查看文件的内容?我的意思是,我可以访问它们吗?
@Kevin和@Catcall已经提供了查找数据目录的指针.如果您对光盘上桌子的物理位置感兴趣,可以使用:
SELECT pg_relation_filepath('my_table');
Run Code Online (Sandbox Code Playgroud)
除非你确切知道自己在做什么,否则不要直接弄乱文件!
甲数据库作为一个整体通过在一个子目录中表示PGDATA/base:
如果使用表空间,它会变得更复杂.阅读手册中" 数据库文件布局 "一章中的所有详细信息:
每个表和索引都存储在一个单独的文件中.对于普通关系,这些文件以表或索引的filenode编号命名,该编号可以在pg_class.relfilenode中找到.
...
对于集群中的每个数据库,PGDATA/base中都有一个子目录,以pg_database中数据库的OID命名.该子目录是数据库文件的默认位置; 特别是,它的系统目录存储在那里.
...
所述pg_relation_filepath()函数表示的任何关系的整个路径(相对于PGDATA).
大胆强调我的.
关于功能的手册pg_database.
该查询show data_directory;将向您显示主数据目录。但这并不一定告诉您事物的存储位置。
PostgreSQL允许您定义新的表空间。表空间是文件系统中的命名目录。PostgreSQL使您可以在任何允许的表空间中存储单个表,索引和整个数据库。因此,如果数据库是在特定的表空间中创建的,那么我相信它的任何对象都不会出现在数据目录中。
要获得有关事物在磁盘上存储位置的可靠运行时信息,您可能需要从系统目录中查询pg_database,pg_tablespace或pg_tables。表空间信息也可能在information_schema视图中可用。
但是对于合并或复制到硬盘,使用这些文件几乎可以肯定是一件坏事。对于这种工作,pg_dump是您的朋友。
| 归档时间: |
|
| 查看次数: |
5197 次 |
| 最近记录: |