PostgreSQLで作成したiDempiere(アイデンピエレ)のデータベースは、PostgreSQLのインストールフォルダの”base”フォルダ(ディレクトリ)内に作成されます。
widnwos環境であれば、"C:\Program Files\PostgreSQL\X.X\data\base"の様なフォルダ階層になっていると思います。
※"X.X"はバージョン番号
しかし、この”base”フォルダ(ディレクトリ)にあるのは、番号が付されているフォルダ(ディレクトリ)で、どれがiDempiereのデータベースのフォルダ(ディレクトリ)なのかわかりません。
そこで、記念すべきCompiere Distribution LabのPostgreSQL Labの第1回目の研究日誌として、iDempiereのデータベースが格納されているフォルダ(ディレクトリ)の確認方法について、調査及び研究し、その成果をまとめておきたいと思います。
PostgreSQLへの接続
"psql"コマンドを使ってPostgreSQLに接続します。
psql -h localhost -d idempiere -U adempiere
※オプション
- -h…ホスト名
- -d…データベース名
- -U…ユーザー名
データベースのOID(Object ID)を確認する
"base"フォルダ(ディレクトリ)にあるフォルダ(ディレクトリ)の数値は、データベースのOID(Object ID)です。なので、データベースのOIDが分かれば、どのフォルダ(ディレクトリ)にiDempiereのデータベースのデータが格納されているのかわかります。
idempiere=# SELECT datname, oid FROM pg_database WHERE datname ='idempiere';
pg_database
"pg_database"には使用可能なデータベースが格納されています。詳しくは下記を参照して下さい。
"base"にあるファイルとデータベースのテーブルを対応させる
iDempiereのデータベースのbaseフォルダ(ディレクトリ)の中には、多くのファイルが格納されています。
ファイル名は番号になっていますが、この番号が1つのテーブルに該当しています。例えば、次のSQLで受注伝票ヘッダ(C_Orderテーブル)のデータが格納されているファイルを確認する事ができます。
SELECT relname, relfilenode FROM pg_class WHERE relname = 'c_order';
下記の実行結果では、"C_Order"テーブルは、314627のファイルであることが確認できます。
便利なpg_relation_filepath()関数(PostgreSQL9.0以降)
PostgreSQL9.0以降は、pg_relation_filepath()関数でテーブル名を指定する事で、そのテーブルが対応するファイルのパスを表示してくれるので、テーブルのOIDとテーブルに対応するファイルの両方を一度に確認する事ができます。
SELECT pg_relation_filepath('c_order');
参考文献
PostgreSQL全機能バイブル
全機能バイブルというだけあって、たぶん全機能が書かれているのだと思いますが、1つ1つの機能の説明は、中上級者向けなんだろうな~と思います。説明が難しい所や、わからない個所は、この本を片手にググって調べる必要はありますが、postgreSQLの全機能をコンパクトに無駄なく説明しているので、PostgreSQLの機能を目次的に把握するのにはとても良いと思います。