プロが教えるわが家の防犯対策術!

現在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)
)

何卒よろしくお願いいたします。

A 回答 (3件)

よく質問を読みましたら、「PHPで」ということですね。

大変失礼致しました。
(1)pg_meta_data関数を使うか、PostgreSQLのシステムカタログを直接
参照するかでクエリを返し、PHPでSQL文の形に整形する。
(2)pg_dumpのバッチファイルを作っておいて、
 system()とかで実行し、できたファイルをPHPで読み込む。
くらいしか思いつきません。

この回答への補足

なるほど、ありがとうございます。
pg_dump XXXXXXX -t web_blog -s > /tmp/dump.sql
で無事テーブル構造を出力することができました。

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

補足日時:2007/05/21 09:16
    • good
    • 0

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



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

pgadmin3-1.6.3/src/dlg/dlgTable.cpp あたりでしょうか?
地道にテーブルやカラム、制約などの情報をそれぞれ取得してきて、プログラムで、CREATE文を整形していますね。
    • good
    • 0
この回答へのお礼

ありがとうございます。
CREATE文を直接取得せずに、情報から生成しているんですね。

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

お礼日時:2007/05/23 17:42

以下に回答があります。


http://oshiete1.goo.ne.jp/qa1891929.html
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!