pg数据库表存放在哪里_PostgreSQL在哪里存储数据库?
PostgreSQL数据库的文件存储在哪里?postgresql.org/docs/9.5/static/storage-file-layout.htmlsudo -u postgres psql -c"show data_directory;"将显示标准PostgreSQL安装上的当前存储位置。要查看数据目录的位置,请使用此查询。SHOW data_directory;要查看所有运行时参数,请使
PostgreSQL数据库的文件存储在哪里?
postgresql.org/docs/9.5/static/storage-file-layout.html
sudo -u postgres psql -c"show data_directory;"将显示标准PostgreSQL安装上的当前存储位置。
要查看数据目录的位置,请使用此查询。
SHOW data_directory;
要查看所有运行时参数,请使用
SHOW ALL;
您可以创建表空间以将数据库对象存储在文件系统的其他部分中。要查看可能不在该数据目录中的表空间,请使用此查询。
SELECT * FROM pg_tablespace;
show data_directory;命令指向数据的确切位置。搜索特定文件夹很痛苦,因为其他人可能已经为您安装了它,现在您不知道配置,因此遵循sql有助于节省时间。 :)谢谢迈克。
它说"必须是超级用户来检查数据目录":(
如果你不是DBA,你无论如何都不需要知道。
顺便说一句 - 如果有人在像我这样的Mac上查找Postgres.app的数据库位置,默认情况下它位于?/ Library / Application Support / Postgres [ver] / var中。
要运行查询,请使用PGAdmin III并使用菜单栏中的"运行查询"图标。
在Windows7上,所有数据库都由C:\Program Files (x86)\PostgreSQL\8.2\data\global下名为pg_database的文件中的数字引用。然后,您应该在C:\Program Files (x86)\PostgreSQL\8.2\data\base下按该编号搜索文件夹名称。那是数据库的内容。
除非问题明确说明操作系统,否则不要以特定于操作系统的方式回答。
为什么不?如果你没有提到操作系统,只是说"这个工作",任何在不同的操作系统上尝试的人都会感到困惑。这是相关的。编辑:哦,你可能意味着"根本不给操作系统特定的答案。"我想这是有道理的,我不知道。
@David,问题被关闭,大概是因为它没有指定哪个操作系统。 (如果它已经指定了一个操作系统,它就会因为过于具体而被关闭。)你的答案很有帮助而且信息丰富 - 只要忽视反对者和挫折者,直到他们最终摧毁了SO。仇恨会讨厌,等等。
@SamGoody,如果这个答案实际上是正确的话,你会说些什么。 (这不是严格不正确的,因为该文件夹可能在Windows中,但它肯定不是给定的)。通过遵循已经给出的答案,可以很容易地找到是否是这种情况。
打开pgAdmin并转到特定数据库的Properties。找到OID然后打开目录
/DATA/base/
应该有你的DB文件。
如何使用命令行工具获取OID?
<5233>
在我的Linux安装下,它在这里:/var/lib/postgresql/8.x/
您可以使用initdb -D"c:/mydb/"更改它
取决于分发 - 对于Fedora 20,它在/var/lib/pgsql/data之下。最好找出使用ps auxw|grep postgres|grep -- -D。
正如"Linux上的PostgreSQL数据库默认位置"所述,在Linux下,您可以使用以下命令找到:
ps aux | grep postgres | grep -- -D
TABLESPACEs可以调整特定表/索引的位置:
CREATE TABLESPACE dbspace LOCATION '/data/dbs';
CREATE TABLE something (......) TABLESPACE dbspace;
CREATE TABLE otherthing (......) TABLESPACE dbspace;
每个人都已经回答,但只是为了最新的更新。如果您想知道所有配置文件所在的位置,请在shell中运行此命令
SELECT name, setting FROM pg_settings WHERE category = 'File Locations';
Postgres将数据存储在其数据目录中的文件中。按照以下步骤转到数据库及其文件:
对应于postgresql表文件的数据库是目录。可以通过运行SHOW data_directory获取整个数据目录的位置。
在类似OS的UNIX(例如:Mac)/Library/PostgreSQL/9.4/data中
进入包含所有数据库文件夹的数据目录中的基本文件夹:/Library/PostgreSQL/9.4/data/base
通过运行查找数据库文件夹名称(给出一个整数。这是数据库文件夹名称):
SELECT oid FROM pg_database WHERE datname = ;
通过运行查找表文件名(给出一个整数。这是文件名):
SELECT relname, relfilenode FROM pg_class WHERE relname = ;
这是一个二进制文件。可以像往常一样获取文件详细信息,例如大小和创建日期时间。有关更多信息,请阅读此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似乎比/usr/local/var/postgres更像Mac的位置。如果不启用隐藏的Finder功能,则无法在Finder中浏览后者。
@Charlie您可以从Go菜单中使用Finder进行浏览。转到>转到文件夹...,或者?? G
@JasonS是的,您可以使用该技巧在Finder中打开not-mac-like文件夹。
仅供参考,截至Postgres 9.4,使用EnterpriseDB提供的安装程序,此答案仍然正确。
在我的例子中它位于:/ Users / bob / Library / Application Support / Postgres / var-9.5
我敢打赌你问这个问题,因为你已经尝试过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
在Windows上,PostgresSQL文档描述的PGDATA目录位于C:\Program Files\PostgreSQL\8.1\data之类的某个位置。特定数据库的数据在(例如)C:\Program Files\PostgreSQL\8.1\data\base\100929下,其中我猜100929是数据库编号。
注意:如果你想进行文件系统级备份,不要只备份这些目录,因为正如文档所描述的那样:"......你可能想尝试从各自的表中备份或恢复某些单独的表或数据库这不起作用,因为如果没有包含所有事务的提交状态的提交日志文件pg_clog / *,这些文件中包含的信息就无法使用。"
这取决于。您可以在安装时将其配置为其他文件夹。
在我的,C: Program Files PostgreSQL 9.4 中没有数据文件夹这是特定的9.4或做错了什么?
picmate的回答是对的。在Windows上主DB文件夹的位置是(至少我的安装)
C:\PostgreSQL\9.2\DATA\base\
而不是在程序文件中。
他的2个脚本将为您提供所需的确切目录/文件:
SELECT oid FROM pg_database WHERE datname = ;
SELECT relname, relfilenode FROM pg_class WHERE relname = ;
我的数据名是16393,而relfilenode是41603
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)