Answers:
若要查看数据目录在哪里,请使用此查询。
show data_directory;
要查看所有运行时参数,请使用
show all;
您可以创建表空间以将数据库对象存储在文件系统的其他部分。要查看表空间(可能不在该数据目录中),请使用此查询。
SELECT * FROM pg_tablespace;
Windows7的上所有的数据库由指定的文件中的一些被称为pg_database
下C:\Program Files (x86)\PostgreSQL\8.2\data\global
。然后,您应该在下按该编号搜索文件夹名称C:\Program Files (x86)\PostgreSQL\8.2\data\base
。那就是数据库的内容。
打开pgAdmin并转到特定数据库的属性。查找OID,然后打开目录
<POSTGRESQL_DIRECTORY>/data/base/<OID>
应该有您的数据库文件。
SELECT oid from pg_database where datname = '<dbname>'
如“ Linux上的PostgreSQL数据库默认位置 ”中所建议,在Linux下,您可以使用以下命令查找:
ps aux | grep postgres | grep -- -D
在我的Linux安装下,它在这里: /var/lib/postgresql/8.x/
您可以用 initdb -D "c:/mydb/"
/var/lib/pgsql/data
。最好找出使用ps auxw|grep postgres|grep -- -D
。
每个人都已经回答,但仅是最新更新。如果您想知道所有配置文件所在的位置,请在外壳中运行此命令
SELECT name, setting FROM pg_settings WHERE category = 'File Locations';
我敢打赌,您在问这个问题,因为您尝试过pg_ctl start
并收到以下错误:
pg_ctl:未指定数据库目录,并且未设置环境变量PGDATA
换句话说,您正在寻找要放置-D
在pg_ctl start
命令中的目录。
在这种情况下,您要查找的目录包含这些文件。
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
locate <filename>
sudo locate <filename>
Postgres将数据存储在其数据目录中的文件中。请按照以下步骤转到数据库及其文件:
与postgresql表文件相对应的数据库是目录。可以通过运行获取整个数据目录的位置SHOW data_directory
。在UNIX之类的OS(例如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线程
在Mac上: /Library/PostgreSQL/9.0/data/base
无法输入目录,但是您可以通过以下方式查看内容: sudo du -hc data
/usr/local/var/postgres
其中使用@MikeSherrill的show data_directory;
技巧
/Library/PostgreSQL/9.0/data/base
似乎更像Mac /usr/local/var/postgres
。如果不启用隐藏的Finder功能,则无法在Finder中浏览到后者。
在Windows上,PostgresSQL文档描述的PGDATA目录位于C:\Program Files\PostgreSQL\8.1\data
。特定数据库的数据位于(例如)下C:\Program Files\PostgreSQL\8.1\data\base\100929
,我想其中100929是数据库编号。
我正在docker容器中运行postgres(9.5)(在CentOS上发生),正如Skippy le Grand Gourou在上面的评论中提到的,这些文件位于中/var/lib/postgresql/data/
。
$ docker exec -it my-postgres-db-container bash
root@c7d61efe2a5d:/# cd /var/lib/postgresql/data/
root@c7d61efe2a5d:/var/lib/postgresql/data# ls -lh
total 56K
drwx------. 7 postgres postgres 71 Apr 5 2018 base
drwx------. 2 postgres postgres 4.0K Nov 2 02:42 global
drwx------. 2 postgres postgres 18 Dec 27 2017 pg_clog
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_commit_ts
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_dynshmem
-rw-------. 1 postgres postgres 4.4K Dec 27 2017 pg_hba.conf
-rw-------. 1 postgres postgres 1.6K Dec 27 2017 pg_ident.conf
drwx------. 4 postgres postgres 39 Dec 27 2017 pg_logical
drwx------. 4 postgres postgres 36 Dec 27 2017 pg_multixact
drwx------. 2 postgres postgres 18 Nov 2 02:42 pg_notify
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_replslot
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_serial
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_snapshots
drwx------. 2 postgres postgres 6 Sep 16 21:15 pg_stat
drwx------. 2 postgres postgres 63 Nov 8 02:41 pg_stat_tmp
drwx------. 2 postgres postgres 18 Oct 24 2018 pg_subtrans
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_tblspc
drwx------. 2 postgres postgres 6 Dec 27 2017 pg_twophase
-rw-------. 1 postgres postgres 4 Dec 27 2017 PG_VERSION
drwx------. 3 postgres postgres 92 Dec 20 2018 pg_xlog
-rw-------. 1 postgres postgres 88 Dec 27 2017 postgresql.auto.conf
-rw-------. 1 postgres postgres 21K Dec 27 2017 postgresql.conf
-rw-------. 1 postgres postgres 37 Nov 2 02:42 postmaster.opts
-rw-------. 1 postgres postgres 85 Nov 2 02:42 postmaster.pid