PostgreSQLはデータベースをどこに保存しますか?


回答:


355

データディレクトリの場所を確認するには、このクエリを使用します。

show data_directory;

すべてのランタイムパラメータを表示するには、次を使用します。

show all;

ファイルシステムの他の部分にデータベースオブジェクトを格納するためのテーブルスペースを作成できます。そのデータディレクトリにない可能性があるテーブルスペースを表示するには、このクエリを使用します。

SELECT * FROM pg_tablespace;

1
show data_directory; コマンドはデータの正確な場所を指します。特定のフォルダを検索すると、他の誰かがあなたに代わってインストールした可能性があり、構成がわからないため、SQLに従うと時間を節約できます。:)マイクに感謝します。
Vishal 2013年

3
「データディレクトリを調べるには、スーパーユーザーである必要があります」:(
temporary_user_name

5
DBAでない場合は、とにかく知る必要はありません。
マイクシェリル「キャットリコール」、

8
ところで-私のように誰かがMacでPostgres.appのデータベースの場所を探している場合、それはデフォルトで〜/ Library / Application Support / Postgres [ver] / varにあります。
ストリンガー2014年

1
クエリを実行するには、PGAdmin IIIを使用し、メニューバーの[クエリの実行]アイコンを使用します。
Rutger Hofste

61

Windows7では、すべてのデータベースはのpg_database下にあるファイル内の番号で参照されますC:\Program Files (x86)\PostgreSQL\8.2\data\global。次に、下の番号でフォルダ名を検索しますC:\Program Files (x86)\PostgreSQL\8.2\data\base。それがデータベースの内容です。


3
質問でOSを明確に述べていない限り、OS固有の方法で回答しないでください。
simonmenke 2012年

24
何故なの?OSに言及せずに「これでうまくいく」とだけ言うと、別のOSでそれを試みている人は混乱します。関連性があります。編集:ああ、あなたはおそらく「OS固有の答えをまったく与えないでください」を意味します。それは理にかなっていると思いますが、わかりません。
David Winiecki 2013年

34
@David、おそらくOSが指定されていなかったため、質問は閉じられました。(OSが指定されていた場合は、具体的すぎるために閉じられていました。)あなたの回答は参考になり、有益でした-最終的にSOを破壊することに成功するまで、反対派と反対派を無視してください。憎しみは嫌いになるだろう、そしてそれすべて。
SamGoody 2013

@SamGoodyこの答えが実際に正しかった場合、あなたが言っていたことが少しポイントになるでしょう。(フォルダー Windowsに存在する可能性があるため、厳密に正しくはありませんが、確かに指定されていません)。それが事実であるかどうかは、すでに与えられた答えに従うことで簡単に見つけることができます。
Jon Hanna 2014年

@senthilkumari私はpostgresql 11とwindows 10を持っています。あなたが言ったように、グローバルフォルダー内のpg_databaseを表示しようとしましたが、何も表示されませんでした。_vms、_fsm、config_exec_params、pg_control、pg_filenode.map、pg_internal.initの束が見えました。Windows 10の場合、どのファイルを検索すればよいですか。違いますか?
Nachiket、

29

pgAdminを開き、特定のデータベースのプロパティに移動します。OIDを見つけてディレクトリを開く

<POSTGRESQL_DIRECTORY>/data/base/<OID>

DBファイルがあるはずです。


14
SELECT oid from pg_database where datname = '<dbname>'
チャーリー


27

私のLinuxインストールでは、ここにあります: /var/lib/postgresql/8.x/

あなたはそれを変えることができます initdb -D "c:/mydb/"


12
ディストリビューションによって異なります— Fedora 20の場合は、その下にあり/var/lib/pgsql/dataます。を使用して調べる方が良いps auxw|grep postgres|grep -- -D
Skippy le Grand Gourou 2014

17

特定のテーブル/インデックスの場所は、TABLESPACEによって調整できます。

CREATE TABLESPACE dbspace LOCATION '/data/dbs';
CREATE TABLE something (......) TABLESPACE dbspace;
CREATE TABLE otherthing (......) TABLESPACE dbspace;

15

誰もが既に回答しましたが、最新の更新のみを求めています。すべての構成ファイルの場所を知りたい場合は、シェルでこのコマンドを実行します

SELECT name, setting FROM pg_settings WHERE category = 'File Locations';

14

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

OSで提供されている検索を使用して、上記のファイルとディレクトリのいずれかを検索することで検索できます。

たとえば、私の場合(Mac OS XでのHomeBrewインストール)、これらのファイルはにあります。サーバーを起動するには、次のように入力します。/usr/local/var/postgres

pg_ctl -D /usr/local/var/postgres -w start

...そしてそれは機能します。


1
自作を使用する場合、このデータを見つける簡単な方法は単純ですbrew info postgres
Ben

私がデータベースフォルダーを探している理由は正しいです。しかし、問題は私が上記のファイルのいずれかを見つけることができないことですlocate <filename>
aswin prabhakar

それらを見つけた...使用する必要があったsudo locate <filename>
aswin prabhakar

14

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スレッドをお読みください


11

Macの場合: /Library/PostgreSQL/9.0/data/base

ディレクトリは入力できませんが、次の方法でコンテンツを確認できます。 sudo du -hc data


13
あなたが自作(?となぜあなたはないでしょう)を介してインストールした場合、それはになり/usr/local/var/postgresますがMikeSherrillの@使用して発見することができshow data_directory;、先端
クリス・ベック

/Library/PostgreSQL/9.0/data/baseよりもMacに似た場所のようです/usr/local/var/postgres。非表示のFinder機能を有効にしないと、Finderで後者を参照することはできません。
チャーリー

@Charlie [移動]メニューからFinderを使用して参照できます。フォルダに移動>移動...、または⇧⌘G
ジェイソンS

@JasonSはい、そのトリックを使用して、Finderで非Macのようなフォルダを開くことができます。
チャーリー

1
私の場合、それは/ Users / bob / Library / Application Support / Postgres / var-9.5
Bwyss

7

Windowsでは、PostgresSQLドキュメントが記述する PGD​​ATAディレクトリはのような場所にありC:\Program Files\PostgreSQL\8.1\dataます。特定のデータベースのデータは(たとえば)の下にC:\Program Files\PostgreSQL\8.1\data\base\100929あります。ここで、100929はデータベース番号です。


1
注意:ファイルシステムレベルのバックアップを行う場合は、これらのディレクトリだけをバックアップするのではなく、ドキュメントで説明されているように、「...ファイルまたはディレクトリ。これらのファイルに含まれる情報は、すべてのトランザクションのコミットステータスを含むコミットログファイルpg_clog / *なしでは使用できないため、機能しません。
Janis Veinbergs 2013年

これによります。インストール時に別のフォルダに設定することもできます。
ANeves 2014年

私の場合、C:\ Program Files \ PostgreSQL \ 9.4 \内にデータフォルダーがありません。これは9.4に固有の問題ですか、それとも何か問題がありますか?
LucyViolet 2017年

2

picmateの答えは正しいです。Windowsでは、メインDBフォルダーの場所は(少なくとも私のインストールでは)

C:\PostgreSQL\9.2\data\base\

プログラムファイルではありません。

彼の2つのスクリプトは、必要な正確なディレクトリ/ファイルを提供します。

SELECT oid from pg_database WHERE datname = <database_name>;
SELECT relname, relfilenode FROM pg_class WHERE relname = <table_name>; 

私のデータは16393で、relfilenodeは41603です。

postgresqlのデータベースファイル


0

私はドッカーコンテナーで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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.