• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PostgreSQLのテーブル構造を取得したい)

PostgreSQLのテーブル構造を取得する方法

このQ&Aのポイント
  • PostgreSQLとPHP5を利用してアプリケーションを開発しています。PHPで既存のPostgreSQLテーブルの定義情報を取得する方法を教えてください。
  • 取得したいテーブルの定義情報は、SQLのCREATE文を使って下記のように取得したいです。テーブル名は「favorite」としています。
  • テーブルの定義情報には、各カラムのデータ型や制約などが含まれます。取得したテーブルの定義情報を用いて、アプリケーションの機能を開発する予定です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

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

from2001
質問者

補足

なるほど、ありがとうございます。 pg_dump XXXXXXX -t web_blog -s > /tmp/dump.sql で無事テーブル構造を出力することができました。 私はpg_adminというwindowsのPostgreSQL管理ソフトを使っているのですが、テーブルの情報表示のところにcreate文でテーブル構造が表示されます。 ですので、PostgreSQLの機能でテーブルの構造をcreate文で出力する機能が実装されているのではないかと思っているのですが、何か、ご存知のことがあれば教えていただければ幸いです。

その他の回答 (2)

回答No.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文を整形していますね。

from2001
質問者

お礼

ありがとうございます。 CREATE文を直接取得せずに、情報から生成しているんですね。 残念ながら私はCは詳しくないのですが参考になりました。 ありがとうございます。

回答No.1

以下に回答があります。 http://oshiete1.goo.ne.jp/qa1891929.html

関連するQ&A