PostgreSQL数据库的文件存储在哪里?
TABLESPACEs可以调整特定表/索引的位置:
CREATE TABLESPACE dbspace LOCATION '/data/dbs'; CREATE TABLE something (......) TABLESPACE dbspace; CREATE TABLE otherthing (......) TABLESPACE dbspace;
要查看数据目录的位置,请使用此查询 .
show data_directory;
要查看所有运行时参数,请使用
show all;
您可以创建表空间以将数据库对象存储在文件系统的其他部分中 . 要查看可能不在该数据目录中的表空间,请使用此查询 .
SELECT * FROM pg_tablespace;
在Windows7上,所有数据库都由 C:\Program Files (x86)\PostgreSQL\8.2\data\global 下名为 pg_database 的文件中的数字引用 . 然后,您应该在 C:\Program Files (x86)\PostgreSQL\8.2\data\base 下按该编号搜索文件夹名称 . 那是数据库的内容 .
C:\Program Files (x86)\PostgreSQL\8.2\data\global
pg_database
C:\Program Files (x86)\PostgreSQL\8.2\data\base
打开pgAdmin并转到特定数据库的Properties . 找到OID然后打开目录
<POSTGRESQL_DIRECTORY>/data/base/<OID>
应该有你的DB文件 .
在我的Linux安装下,它在这里: /var/lib/postgresql/8.x/
/var/lib/postgresql/8.x/
您可以使用 initdb -D "c:/mydb/" 进行更改
initdb -D "c:/mydb/"
正如“PostgreSQL database default location on Linux”中所述,在Linux下,您可以使用以下命令找到:
ps aux | grep postgres | grep -- -D
Postgres将数据存储在其数据目录中的文件中 . 按照以下步骤转到数据库及其文件:
对应于postgresql表文件的数据库是目录 . 可以通过运行 SHOW data_directory 获取整个数据目录的位置 . 在像OS这样的UNIX中(例如:Mac) /Library/PostgreSQL/9.4/data 进入数据目录中包含所有数据库文件夹的基本文件夹: /Library/PostgreSQL/9.4/data/base
SHOW data_directory
/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>;
这是一个二进制文件 . 可以像往常一样获取文件详细信息,例如大小和创建日期时间 . 欲了解更多信息read this SO thread
在Mac上: /Library/PostgreSQL/9.0/data/base
/Library/PostgreSQL/9.0/data/base
无法输入目录,但您可以通过以下方式查看内容: sudo du -hc data
sudo du -hc data
我'd bet you'问这个问题是因为你试过 pg_ctl start 并收到以下错误:
pg_ctl start
pg_ctl:未指定数据库目录,并且环境变量PGDATA未设置
换句话说,您正在寻找 -D 之后放在 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 中 . 要启动服务器,我输入:
/usr/local/var/postgres
pg_ctl -D /usr/local/var/postgres -w start
......它有效 .
在Windows上,PostgresSQL docs describe所在的PGDATA目录位于 C:\Program Files\PostgreSQL\8.1\data 之类的某个位置 . 特定数据库的数据在(例如) C:\Program Files\PostgreSQL\8.1\data\base\100929 下,其中我猜100929是数据库编号 .
C:\Program Files\PostgreSQL\8.1\data
C:\Program Files\PostgreSQL\8.1\data\base\100929
每个人都已经回答,但只是为了最新的更新 . 如果您想知道所有配置文件所在的位置,请在shell中运行此命令
SELECT name, setting FROM pg_settings WHERE category = 'File Locations';
11 回答
TABLESPACEs可以调整特定表/索引的位置:
要查看数据目录的位置,请使用此查询 .
要查看所有运行时参数,请使用
您可以创建表空间以将数据库对象存储在文件系统的其他部分中 . 要查看可能不在该数据目录中的表空间,请使用此查询 .
在Windows7上,所有数据库都由
C:\Program Files (x86)\PostgreSQL\8.2\data\global
下名为pg_database
的文件中的数字引用 . 然后,您应该在C:\Program Files (x86)\PostgreSQL\8.2\data\base
下按该编号搜索文件夹名称 . 那是数据库的内容 .打开pgAdmin并转到特定数据库的Properties . 找到OID然后打开目录
应该有你的DB文件 .
在我的Linux安装下,它在这里:
/var/lib/postgresql/8.x/
您可以使用
initdb -D "c:/mydb/"
进行更改正如“PostgreSQL database default location on Linux”中所述,在Linux下,您可以使用以下命令找到:
Postgres将数据存储在其数据目录中的文件中 . 按照以下步骤转到数据库及其文件:
对应于postgresql表文件的数据库是目录 . 可以通过运行
SHOW data_directory
获取整个数据目录的位置 . 在像OS这样的UNIX中(例如:Mac)/Library/PostgreSQL/9.4/data
进入数据目录中包含所有数据库文件夹的基本文件夹:/Library/PostgreSQL/9.4/data/base
通过运行查找数据库文件夹名称(给出一个整数 . 这是数据库文件夹名称):
通过运行查找表文件名(给出一个整数 . 这是文件名):
这是一个二进制文件 . 可以像往常一样获取文件详细信息,例如大小和创建日期时间 . 欲了解更多信息read this SO thread
在Mac上:
/Library/PostgreSQL/9.0/data/base
无法输入目录,但您可以通过以下方式查看内容:
sudo du -hc data
我'd bet you'问这个问题是因为你试过
pg_ctl start
并收到以下错误:换句话说,您正在寻找
-D
之后放在pg_ctl start
中的目录 .在这种情况下,您要查找的目录包含这些文件 .
您可以使用操作系统提供的搜索找到上面的任何文件和目录,从而找到它 .
例如,在我的情况下(在 Mac OS X 上安装 HomeBrew ),这些文件位于
/usr/local/var/postgres
中 . 要启动服务器,我输入:......它有效 .
在Windows上,PostgresSQL docs describe所在的PGDATA目录位于
C:\Program Files\PostgreSQL\8.1\data
之类的某个位置 . 特定数据库的数据在(例如)C:\Program Files\PostgreSQL\8.1\data\base\100929
下,其中我猜100929是数据库编号 .每个人都已经回答,但只是为了最新的更新 . 如果您想知道所有配置文件所在的位置,请在shell中运行此命令