Where does PostgreSQL store the database?
PostgreSQL数据库的文件存储在哪里?
要查看数据目录的位置,请使用此查询。
1 | SHOW data_directory; |
要查看所有运行时参数,请使用
1 | SHOW ALL; |
您可以创建表空间以将数据库对象存储在文件系统的其他部分中。要查看可能不在该数据目录中的表空间,请使用此查询。
1 | SELECT * FROM pg_tablespace; |
在Windows7上,所有数据库都由
打开pgAdmin并转到特定数据库的Properties。找到OID然后打开目录
1 | <POSTGRESQL_DIRECTORY>/DATA/base/<OID> |
应该有你的DB文件。
在我的Linux安装下,它在这里:
您可以使用
正如"Linux上的PostgreSQL数据库默认位置"所述,在Linux下,您可以使用以下命令找到:
1 | ps aux | grep postgres | grep -- -D |
TABLESPACEs可以调整特定表/索引的位置:
1 2 3 | CREATE TABLESPACE dbspace LOCATION '/data/dbs'; CREATE TABLE something (......) TABLESPACE dbspace; CREATE TABLE otherthing (......) TABLESPACE dbspace; |
每个人都已经回答,但只是为了最新的更新。如果您想知道所有配置文件所在的位置,请在shell中运行此命令
1 | SELECT name, setting FROM pg_settings WHERE category = 'File Locations'; |
Postgres将数据存储在其数据目录中的文件中。按照以下步骤转到数据库及其文件:
对应于postgresql表文件的数据库是目录。可以通过运行
在类似OS的UNIX(例如:Mac)
进入包含所有数据库文件夹的数据目录中的基本文件夹:
通过运行查找数据库文件夹名称(给出一个整数。这是数据库文件夹名称):
1 | SELECT oid FROM pg_database WHERE datname = <database_name>; |
通过运行查找表文件名(给出一个整数。这是文件名):
1 | SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>; |
这是一个二进制文件。可以像往常一样获取文件详细信息,例如大小和创建日期时间。有关更多信息,请阅读此SO线程
在Mac上:
无法输入目录,但您可以通过以下方式查看内容:
我敢打赌你问这个问题,因为你已经尝试过
pg_ctl: no database directory specified and environment variable PGDATA unset
换句话说,您正在寻找在
在这种情况下,您要查找的目录包含这些文件。
1 2 3 4 5 6 7 8 | PG_VERSION pg_dynshmem pg_multixact pg_snapshots pg_tblspc postgresql.conf base pg_hba.conf pg_notify pg_stat pg_twophase postmaster.opts global pg_ident.conf pg_replslot pg_stat_tmp pg_xlog postmaster.pid pg_clog pg_logical pg_serial pg_subtrans postgresql.auto.conf server.log |
您可以使用操作系统提供的搜索找到上面的任何文件和目录,从而找到它。
例如,在我的情况下(Mac OS X上的HomeBrew安装),这些文件位于
1 | pg_ctl -D /usr/LOCAL/var/postgres -w START |
......它有效。
在Windows上,PostgresSQL文档描述的PGDATA目录位于
picmate的回答是对的。在Windows上主DB文件夹的位置是(至少我的安装)
1 | C:\PostgreSQL\9.2\DATA\base\ |
而不是在程序文件中。
他的2个脚本将为您提供所需的确切目录/文件:
1 2 | SELECT oid FROM pg_database WHERE datname = <database_name>; SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>; |
我的数据名是16393,而relfilenode是41603