ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3005397 PostgreSQLのテーブル構造を取得したい
質問者:from2001 現在PostgreSQLとPHP5を利用してアプリケーションを開発しております。
PHPにて現在すでに存在するPostgreSQLのテーブルの定義情報を取得するにはどうすればよろしいでしょうか。テーブルの定義情報は下記のようにSQLのCREATE文で取得したいと思っております。

CREATE TABLE favorite
(
code serial NOT NULL,
reg_date timestamp without time zone NOT NULL DEFAULT now(),
update_date timestamp without time zone,
title text,
url text,
u_id character varying(20) NOT NULL,
enabled_flag smallint NOT NULL DEFAULT 1,
CONSTRAINT web_favorite_pkey PRIMARY KEY (fv_code)
)

何卒よろしくお願いいたします。
困り度:
  • 困っています
質問投稿日時:
07/05/16 19:08
この質問に対する回答は締め切られました。

回答

ANo.3 PgAdminIIIでしたら、C++のソースがありますので確認できます。

http://www.postgresql.org/ftp/pgadmin3/release/v1.6.3/src/
から、
pgadmin3-1.6.3.tar.gz
を落としてこれます。

pgadmin3-1.6.3/src/dlg/dlgTable.cpp あたりでしょうか?
地道にテーブルやカラム、制約などの情報をそれぞれ取得してきて、プログラムで、CREATE文を整形していますね。
回答者:copymaster
種類:回答
どんな人:経験者
自信:参考意見
回答日時:
07/05/23 01:50
この回答へのお礼ありがとうございます。
CREATE文を直接取得せずに、情報から生成しているんですね。

残念ながら私はCは詳しくないのですが参考になりました。
ありがとうございます。

回答良回答20pt

ANo.2 よく質問を読みましたら、「PHPで」ということですね。大変失礼致しました。
(1)pg_meta_data関数を使うか、PostgreSQLのシステムカタログを直接
参照するかでクエリを返し、PHPでSQL文の形に整形する。
(2)pg_dumpのバッチファイルを作っておいて、
 system()とかで実行し、できたファイルをPHPで読み込む。
くらいしか思いつきません。
回答者:copymaster
種類:回答
どんな人:経験者
自信:参考意見
回答日時:
07/05/18 02:13
この回答への補足なるほど、ありがとうございます。
pg_dump XXXXXXX -t web_blog -s > /tmp/dump.sql
で無事テーブル構造を出力することができました。

私はpg_adminというwindowsのPostgreSQL管理ソフトを使っているのですが、テーブルの情報表示のところにcreate文でテーブル構造が表示されます。
ですので、PostgreSQLの機能でテーブルの構造をcreate文で出力する機能が実装されているのではないかと思っているのですが、何か、ご存知のことがあれば教えていただければ幸いです。
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.1 以下に回答があります。
http://oshiete1.goo.ne.jp/qa1891929.html
回答者:copymaster
種類:回答
どんな人:経験者
自信:参考意見
回答日時:
07/05/17 13:47
この回答へのお礼この回答にお礼をつける(質問者のみ)