PostgreSQL数据库的文件存储在哪里?
要查看数据目录的位置,请使用以下查询。
show data_directory;
要查看所有运行时参数,请使用
show all;
您可以创建表空间以将数据库对象存储在文件系统的其他部分。要查看可能不在该数据目录中的表空间,请使用此查询。
SELECT *, pg_tablespace_location(oid) FROM pg_tablespace;
psql -U postgres -tA -c "SHOW data_directory;"
- mivk在 Windows7 上,所有的数据库都是通过名为 pg_database
的文件下的编号来引用的,该文件位于 C:\Program Files (x86)\PostgreSQL\8.2\data\global
目录下。然后,您应该在 C:\Program Files (x86)\PostgreSQL\8.2\data\base
目录下搜索以该数字命名的文件夹,这就是数据库的内容。
如在“Linux下的PostgreSQL数据库默认位置”中所建议的,您可以使用以下命令查找:
ps aux | grep postgres | grep -- -D
打开pgAdmin并转到特定数据库的属性。查找OID,然后打开目录
<POSTGRESQL_DIRECTORY>/data/base/<OID>
这里应该是您的数据库文件。
SELECT oid from pg_database where datname = '<dbname>'
- Charlie在我的Linux系统中,它的位置是:/var/lib/postgresql/8.x/
您可以使用initdb -D "c:/mydb/"
来更改它。
/var/lib/pgsql/data
目录下。最好使用 ps auxw|grep postgres|grep -- -D
命令来查找。 - Skippy le Grand Gourou大家已经回答了,但仅限于最新的更新。如果您想知道所有配置文件的位置,则在 shell 中运行此命令。
SELECT name, setting FROM pg_settings WHERE category = 'File Locations';
PostgreSQL 将数据存储在其数据目录中的文件中。按照以下步骤前往数据库及其文件:
与 PostgreSQL 表文件对应的数据库是一个目录。可以通过运行 SHOW data_directory
命令获取整个数据目录的位置。
在类 UNIX 的操作系统(例如:Mac)中,数据目录的位置为:/Library/PostgreSQL/9.4/data
。
进入数据目录中包含所有数据库文件夹的基础文件夹:/Library/PostgreSQL/9.4/data/base
通过运行以下命令查找数据库文件夹名称(会返回一个整数,这就是数据库文件夹名称):
SELECT oid from pg_database WHERE datname = <database_name>;
运行以下命令以获取表格文件名称(将返回一个整数,这个整数即为文件名):
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>;
这是一个二进制文件。可以像通常一样获得文件大小和创建日期时间等文件详细信息。要了解更多信息,请阅读此SO线程。
我打赌你问这个问题是因为你尝试过pg_ctl start
,并收到以下错误信息:
pg_ctl: no database directory specified and environment variable PGDATA unset
换句话说,你正在寻找在pg_ctl start
命令中放置-D
后面的目录。
在这种情况下,你要找的目录包含这些文件。
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 安装),这些文件位于 /usr/local/var/postgres
。要启动服务器,我键入:
pg_ctl -D /usr/local/var/postgres -w start
...并且它起作用了。
brew info postgres
。 - Bensudo locate <文件名>
- wardaddyCREATE TABLESPACE dbspace LOCATION '/data/dbs';
CREATE TABLE something (......) TABLESPACE dbspace;
CREATE TABLE otherthing (......) TABLESPACE dbspace;
在Mac上:/Library/PostgreSQL/9.0/data/base
。
无法进入该目录,但可以通过以下方式查看内容:sudo du -hc data
。
/usr/local/var/postgres
,您可以使用@MikeSherrill的show data_directory;
提示来发现它。 - Chris Beck
sudo -u postgres psql -c "show data_directory;"
命令可显示标准 PostgreSQL 安装的当前存储位置。 - user6901258